Mike,

The current implementation of the Dynamic type attach behavior works in terms 
of Xen ISCSI which why I ask about the difference.  Another way to ask the 
question -- what is the definition of a Dynamic storage pool type?

Thanks,
-John

On Jun 3, 2013, at 5:10 PM, Mike Tutkowski <mike.tutkow...@solidfire.com> wrote:

> As far as I know, the iSCSI type is uniquely used by XenServer when you
> want to set up Primary Storage that is directly based on an iSCSI target.
> This allows you to skip the step of going to the hypervisor and creating a
> storage repository based on that iSCSI target as CloudStack does that part
> for you. I think this is only supported for XenServer. For all other
> hypervisors, you must first go to the hypervisor and perform this step
> manually.
> 
> I don't really know what RBD is.
> 
> 
> On Mon, Jun 3, 2013 at 2:13 PM, John Burwell <jburw...@basho.com> wrote:
> 
>> Mike,
>> 
>> Reading through the code, what is the difference between the ISCSI and
>> Dynamic types?  Why isn't RBD considered Dynamic?
>> 
>> Thanks,
>> -John
>> 
>> On Jun 3, 2013, at 3:46 PM, Mike Tutkowski <mike.tutkow...@solidfire.com>
>> wrote:
>> 
>>> This new type of storage is defined in the Storage.StoragePoolType class
>>> (called Dynamic):
>>> 
>>> public static enum StoragePoolType {
>>> 
>>>       Filesystem(false), // local directory
>>> 
>>>       NetworkFilesystem(true), // NFS or CIFS
>>> 
>>>       IscsiLUN(true), // shared LUN, with a clusterfs overlay
>>> 
>>>       Iscsi(true), // for e.g., ZFS Comstar
>>> 
>>>       ISO(false), // for iso image
>>> 
>>>       LVM(false), // XenServer local LVM SR
>>> 
>>>       CLVM(true),
>>> 
>>>       RBD(true),
>>> 
>>>       SharedMountPoint(true),
>>> 
>>>       VMFS(true), // VMware VMFS storage
>>> 
>>>       PreSetup(true), // for XenServer, Storage Pool is set up by
>>> customers.
>>> 
>>>       EXT(false), // XenServer local EXT SR
>>> 
>>>       OCFS2(true),
>>> 
>>>       Dynamic(true); // dynamic, zone-wide storage (ex. SolidFire)
>>> 
>>> 
>>>       boolean shared;
>>> 
>>> 
>>>       StoragePoolType(boolean shared) {
>>> 
>>>           this.shared = shared;
>>> 
>>>       }
>>> 
>>> 
>>>       public boolean isShared() {
>>> 
>>>           return shared;
>>> 
>>>       }
>>> 
>>>   }
>>> 
>>> 
>>> On Mon, Jun 3, 2013 at 1:41 PM, Mike Tutkowski <
>> mike.tutkow...@solidfire.com
>>>> wrote:
>>> 
>>>> For example, let's say another storage company wants to implement a
>>>> plug-in to leverage its Quality of Service feature. It would be dynamic,
>>>> zone-wide storage, as well. They would need only implement a storage
>>>> plug-in as I've made the necessary changes to the hypervisor-attach
>> logic
>>>> to support their plug-in.
>>>> 
>>>> 
>>>> On Mon, Jun 3, 2013 at 1:39 PM, Mike Tutkowski <
>>>> mike.tutkow...@solidfire.com> wrote:
>>>> 
>>>>> Oh, sorry to imply the XenServer code is SolidFire specific. It is not.
>>>>> 
>>>>> The XenServer attach logic is now aware of dynamic, zone-wide storage
>>>>> (and SolidFire is an implementation of this kind of storage). This
>> kind of
>>>>> storage is new to 4.2 with Edison's storage framework changes.
>>>>> 
>>>>> Edison created a new framework that supported the creation and deletion
>>>>> of volumes dynamically. However, when I visited with him in Portland
>> back
>>>>> in April, we realized that it was not complete. We realized there was
>>>>> nothing CloudStack could do with these volumes unless the attach logic
>> was
>>>>> changed to recognize this new type of storage and create the
>> appropriate
>>>>> hypervisor data structure.
>>>>> 
>>>>> 
>>>>> On Mon, Jun 3, 2013 at 1:28 PM, John Burwell <jburw...@basho.com>
>> wrote:
>>>>> 
>>>>>> Mike,
>>>>>> 
>>>>>> It is generally odd to me that any operation in the Storage layer
>> would
>>>>>> understand or care about details.  I expect to see the Storage
>> services
>>>>>> expose a set of operations that can be composed/driven by the
>> Hypervisor
>>>>>> implementations to allocate space/create structures per their needs.
>> If
>>>>>> we
>>>>>> don't invert this dependency, we are going to end with a massive
>> n-to-n
>>>>>> problem that will make the system increasingly difficult to maintain
>> and
>>>>>> enhance.  Am I understanding that the Xen specific SolidFire code is
>>>>>> located in the CitrixResourceBase class?
>>>>>> 
>>>>>> Thanks,
>>>>>> -John
>>>>>> 
>>>>>> 
>>>>>> On Mon, Jun 3, 2013 at 3:12 PM, Mike Tutkowski <
>>>>>> mike.tutkow...@solidfire.com
>>>>>>> wrote:
>>>>>> 
>>>>>>> To delve into this in a bit more detail:
>>>>>>> 
>>>>>>> Prior to 4.2 and aside from one setup method for XenServer, the admin
>>>>>> had
>>>>>>> to first create a volume on the storage system, then go into the
>>>>>> hypervisor
>>>>>>> to set up a data structure to make use of the volume (ex. a storage
>>>>>>> repository on XenServer or a datastore on ESX(i)). VMs and data disks
>>>>>> then
>>>>>>> shared this storage system's volume.
>>>>>>> 
>>>>>>> With Edison's new storage framework, storage need no longer be so
>>>>>> static
>>>>>>> and you can easily create a 1:1 relationship between a storage
>> system's
>>>>>>> volume and the VM's data disk (necessary for storage Quality of
>>>>>> Service).
>>>>>>> 
>>>>>>> You can now write a plug-in that is called to dynamically create and
>>>>>> delete
>>>>>>> volumes as needed.
>>>>>>> 
>>>>>>> The problem that the storage framework did not address is in creating
>>>>>> and
>>>>>>> deleting the hypervisor-specific data structure when performing an
>>>>>>> attach/detach.
>>>>>>> 
>>>>>>> That being the case, I've been enhancing it to do so. I've got
>>>>>> XenServer
>>>>>>> worked out and submitted. I've got ESX(i) in my sandbox and can
>> submit
>>>>>> this
>>>>>>> if we extend the 4.2 freeze date.
>>>>>>> 
>>>>>>> Does that help a bit? :)
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Jun 3, 2013 at 1:03 PM, Mike Tutkowski <
>>>>>>> mike.tutkow...@solidfire.com
>>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi John,
>>>>>>>> 
>>>>>>>> The storage plug-in - by itself - is hypervisor agnostic.
>>>>>>>> 
>>>>>>>> The issue is with the volume-attach logic (in the agent code). The
>>>>>>> storage
>>>>>>>> framework calls into the plug-in to have it create a volume as
>>>>>> needed,
>>>>>>> but
>>>>>>>> when the time comes to attach the volume to a hypervisor, the attach
>>>>>>> logic
>>>>>>>> has to be smart enough to recognize it's being invoked on zone-wide
>>>>>>> storage
>>>>>>>> (where the volume has just been created) and create, say, a storage
>>>>>>>> repository (for XenServer) or a datastore (for VMware) to make use
>>>>>> of the
>>>>>>>> volume that was just created.
>>>>>>>> 
>>>>>>>> I've been spending most of my time recently making the attach logic
>>>>>> work
>>>>>>>> in the agent code.
>>>>>>>> 
>>>>>>>> Does that clear it up?
>>>>>>>> 
>>>>>>>> Thanks!
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Mon, Jun 3, 2013 at 12:48 PM, John Burwell <jburw...@basho.com>
>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Mike,
>>>>>>>>> 
>>>>>>>>> Can you explain why the the storage driver is hypervisor specific?
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> -John
>>>>>>>>> 
>>>>>>>>> On Jun 3, 2013, at 1:21 PM, Mike Tutkowski <
>>>>>>> mike.tutkow...@solidfire.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Yes, ultimately I would like to support all hypervisors that
>>>>>>> CloudStack
>>>>>>>>>> supports. I think I'm just out of time for 4.2 to get KVM in.
>>>>>>>>>> 
>>>>>>>>>> Right now this plug-in supports XenServer. Depending on what we do
>>>>>>> with
>>>>>>>>>> regards to 4.2 feature freeze, I have it working for VMware in my
>>>>>>>>> sandbox,
>>>>>>>>>> as well.
>>>>>>>>>> 
>>>>>>>>>> Also, just to be clear, this is all in regards to Disk Offerings.
>>>>>> I
>>>>>>>>> plan to
>>>>>>>>>> support Compute Offerings post 4.2.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Mon, Jun 3, 2013 at 11:14 AM, Kelcey Jamison Damage <
>>>>>>> kel...@bbits.ca
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Is there any plan on supporting KVM in the patch cycle post 4.2?
>>>>>>>>>>> 
>>>>>>>>>>> ----- Original Message -----
>>>>>>>>>>> From: "Mike Tutkowski" <mike.tutkow...@solidfire.com>
>>>>>>>>>>> To: dev@cloudstack.apache.org
>>>>>>>>>>> Sent: Monday, June 3, 2013 10:12:32 AM
>>>>>>>>>>> Subject: Re: [MERGE] disk_io_throttling to MASTER
>>>>>>>>>>> 
>>>>>>>>>>> I agree on merging Wei's feature first, then mine.
>>>>>>>>>>> 
>>>>>>>>>>> If his feature is for KVM only, then it is a non issue as I don't
>>>>>>>>> support
>>>>>>>>>>> KVM in 4.2.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Mon, Jun 3, 2013 at 8:55 AM, Wei ZHOU <ustcweiz...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> John,
>>>>>>>>>>>> 
>>>>>>>>>>>> For the billing, as no one works on billing now, users need to
>>>>>>>>> calculate
>>>>>>>>>>>> the billing by themselves. They can get the service_offering and
>>>>>>>>>>>> disk_offering of a VMs and volumes for calculation. Of course
>>>>>> it is
>>>>>>>>>>> better
>>>>>>>>>>>> to tell user the exact limitation value of individual volume,
>>>>>> and
>>>>>>>>> network
>>>>>>>>>>>> rate limitation for nics as well. I can work on it later. Do you
>>>>>>>>> think it
>>>>>>>>>>>> is a part of I/O throttling?
>>>>>>>>>>>> 
>>>>>>>>>>>> Sorry my misunstand the second the question.
>>>>>>>>>>>> 
>>>>>>>>>>>> Agree with what you said about the two features.
>>>>>>>>>>>> 
>>>>>>>>>>>> -Wei
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 2013/6/3 John Burwell <jburw...@basho.com>
>>>>>>>>>>>> 
>>>>>>>>>>>>> Wei,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Jun 3, 2013, at 2:13 AM, Wei ZHOU <ustcweiz...@gmail.com>
>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Hi John, Mike
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I hope Mike's aswer helps you. I am trying to adding more.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> (1) I think billing should depend on IO statistics rather than
>>>>>>> IOPS
>>>>>>>>>>>>>> limitation. Please review disk_io_stat if you have time.
>>>>>>>>>>> disk_io_stat
>>>>>>>>>>>>> can
>>>>>>>>>>>>>> get the IO statistics including bytes/iops read/write for an
>>>>>>>>>>> individual
>>>>>>>>>>>>>> virtual machine.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Going by the AWS model, customers are billed more for volumes
>>>>>> with
>>>>>>>>>>>>> provisioned IOPS, as well as, for those operations (
>>>>>>>>>>>>> http://aws.amazon.com/ebs/).  I would imagine our users would
>>>>>> like
>>>>>>>>> the
>>>>>>>>>>>>> option to employ similar cost models.  Could an operator
>>>>>> implement
>>>>>>>>>>> such a
>>>>>>>>>>>>> billing model in the current patch?
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> (2) Do you mean IOPS runtime change? KVM supports setting
>>>>>> IOPS/BPS
>>>>>>>>>>>>>> limitation for a running virtual machine through command line.
>>>>>>>>>>> However,
>>>>>>>>>>>>>> CloudStack does not support changing the parameters of a
>>>>>> created
>>>>>>>>>>>> offering
>>>>>>>>>>>>>> (computer offering or disk offering).
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I meant at the Java interface level.  I apologize for being
>>>>>>> unclear.
>>>>>>>>>>> Can
>>>>>>>>>>>>> we more generalize allocation algorithms with a set of
>>>>>> interfaces
>>>>>>>>> that
>>>>>>>>>>>>> describe the service guarantees provided by a resource?
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> (3) It is a good question. Maybe it is better to commit Mike's
>>>>>>> patch
>>>>>>>>>>>>> after
>>>>>>>>>>>>>> disk_io_throttling as Mike needs to consider the limitation in
>>>>>>>>>>>> hypervisor
>>>>>>>>>>>>>> type, I think.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I will expand on my thoughts in a later response to Mike
>>>>>> regarding
>>>>>>>>> the
>>>>>>>>>>>>> touch points between these two features.  I think that
>>>>>>>>>>> disk_io_throttling
>>>>>>>>>>>>> will need to be merged before SolidFire, but I think we need
>>>>>> closer
>>>>>>>>>>>>> coordination between the branches (possibly have have solidfire
>>>>>>> track
>>>>>>>>>>>>> disk_io_throttling) to coordinate on this issue.
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> - Wei
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 2013/6/3 John Burwell <jburw...@basho.com>
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Mike,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> The things I want to understand are the following:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 1) Is there value in capturing IOPS policies be captured in
>>>>>> a
>>>>>>>>>>> common
>>>>>>>>>>>>>>> data model (e.g. for billing/usage purposes, expressing
>>>>>>> offerings).
>>>>>>>>>>>>>>> 2) Should there be a common interface model for reasoning
>>>>>> about
>>>>>>>>>>> IOP
>>>>>>>>>>>>>>> provisioning at runtime?
>>>>>>>>>>>>>>> 3) How are conflicting provisioned IOPS configurations
>>>>>> between
>>>>>>> a
>>>>>>>>>>>>>>> hypervisor and storage device reconciled?  In particular, a
>>>>>>>>> scenario
>>>>>>>>>>>>> where
>>>>>>>>>>>>>>> is lead to believe (and billed) for more IOPS configured for
>>>>>> a VM
>>>>>>>>>>>> than a
>>>>>>>>>>>>>>> storage device has been configured to deliver.  Another
>>>>>> scenario
>>>>>>>>>>>> could a
>>>>>>>>>>>>>>> consistent configuration between a VM and a storage device at
>>>>>>>>>>> creation
>>>>>>>>>>>>>>> time, but a later modification to storage device introduces
>>>>>>> logical
>>>>>>>>>>>>>>> inconsistency.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>> -John
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Jun 2, 2013, at 8:38 PM, Mike Tutkowski <
>>>>>>>>>>>>> mike.tutkow...@solidfire.com>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi John,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I believe Wei's feature deals with controlling the max
>>>>>> number of
>>>>>>>>>>> IOPS
>>>>>>>>>>>>> from
>>>>>>>>>>>>>>> the hypervisor side.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> My feature is focused on controlling IOPS from the storage
>>>>>> system
>>>>>>>>>>>> side.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I hope that helps. :)
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Sun, Jun 2, 2013 at 6:35 PM, John Burwell <
>>>>>> jburw...@basho.com
>>>>>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wei,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> My opinion is that no features should be merged until all
>>>>>>>>>>> functional
>>>>>>>>>>>>>>>> issues have been resolved and it is ready to turn over to
>>>>>> test.
>>>>>>>>>>>> Until
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> total Ops vs discrete read/write ops issue is addressed and
>>>>>>>>>>>> re-reviewed
>>>>>>>>>>>>>>> by
>>>>>>>>>>>>>>>> Wido, I don't think this criteria has been satisfied.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Also, how does this work intersect/compliment the SolidFire
>>>>>>> patch
>>>>>>>>> (
>>>>>>>>>>>>>>>> https://reviews.apache.org/r/11479/)?  As I understand it
>>>>>> that
>>>>>>>>>>> work
>>>>>>>>>>>> is
>>>>>>>>>>>>>>>> also involves provisioned IOPS.  I would like to ensure we
>>>>>> don't
>>>>>>>>>>>> have a
>>>>>>>>>>>>>>>> scenario where provisioned IOPS in KVM and SolidFire are
>>>>>>>>>>>> unnecessarily
>>>>>>>>>>>>>>>> incompatible.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> -John
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On Jun 1, 2013, at 6:47 AM, Wei ZHOU <ustcweiz...@gmail.com
>>>>>>> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Sure. I will change it next week.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> -Wei
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 2013/6/1 Wido den Hollander <w...@widodh.nl>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi Wei,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 06/01/2013 08:24 AM, Wei ZHOU wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Exactly. I have pushed the features into master.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> If anyone object thems for technical reason till Monday, I
>>>>>> will
>>>>>>>>>>>> revert
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> them.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> For the sake of clarity I just want to mention again that we
>>>>>>>>> should
>>>>>>>>>>>>>>> change
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> the total IOps to R/W IOps asap so that we never release a
>>>>>>> version
>>>>>>>>>>>> with
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> only total IOps.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> You laid the groundwork for the I/O throttling and that's
>>>>>> great!
>>>>>>>>> We
>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> however prevent that we create legacy from day #1.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> -Wei
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 2013/5/31 Wido den Hollander <w...@widodh.nl>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 05/31/2013 03:59 PM, John Burwell wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> +1 -- this enhancement must to discretely support read and
>>>>>> write
>>>>>>>>>>>> IOPS.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> don't see how it could be fixed later because I don't see
>>>>>> how we
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> correctly
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> split total IOPS into read and write.  Therefore, we would
>>>>>> be
>>>>>>>>> stuck
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> with a
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> total unless/until we decided to break backwards
>>>>>> compatibility.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> What Wei meant was merging it into master now so that it
>>>>>> will go
>>>>>>>>> in
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 4.2 branch and add Read / Write IOps before the 4.2 release
>>>>>> so
>>>>>>>>> that
>>>>>>>>>>>> 4.2
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> will be released with Read and Write instead of Total IOps.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> This is to make the May 31st feature freeze date. But if the
>>>>>>>>> window
>>>>>>>>>>>>> moves
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (see other threads) then it won't be necessary to do that.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I also completely agree that there is no association between
>>>>>>>>>>> network
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> disk I/O.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> -John
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On May 31, 2013, at 9:51 AM, Wido den Hollander <
>>>>>> w...@widodh.nl
>>>>>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi Wei,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 05/31/2013 03:13 PM, Wei ZHOU wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi Wido,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks. Good question.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I  thought about at the beginning. Finally I decided to
>>>>>> ignore
>>>>>>> the
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> difference of read and write mainly because the network
>>>>>>> throttling
>>>>>>>>>>>> did
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> care the difference of sent and received bytes as well.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> That reasoning seems odd. Networking and disk I/O completely
>>>>>>>>>>>> different.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Disk I/O is much more expensive in most situations then
>>>>>> network
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> bandwith.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Implementing it will be some copy-paste work. It could be
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> implemented in
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> few days. For the deadline of feature freeze, I will
>>>>>> implement
>>>>>>> it
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> after
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> that , if needed.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> It think it's a feature we can't miss. But if it goes into
>>>>>> the
>>>>>>> 4.2
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> window we have to make sure we don't release with only total
>>>>>>> IOps
>>>>>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> fix
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> it in 4.3, that will confuse users.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> -Wei
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 2013/5/31 Wido den Hollander <w...@widodh.nl>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi Wei,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 05/30/2013 06:03 PM, Wei ZHOU wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I would like to merge disk_io_throttling branch into master.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> If nobody object, I will merge into master in 48 hours.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> The purpose is :
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Virtual machines are running on the same storage device
>>>>>> (local
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> storage or
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> share strage). Because of the rate limitation of device
>>>>>> (such as
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> iops), if
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> one VM has large disk operation, it may affect the disk
>>>>>>>>> performance
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> of
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> other VMs running on the same storage device.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> It is neccesary to set the maximum rate and limit the disk
>>>>>> I/O
>>>>>>> of
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> VMs.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Looking at the code I see you make no difference between
>>>>>> Read
>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Write
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> IOps.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Qemu and libvirt support setting both a different rate for
>>>>>> Read
>>>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Write
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> IOps which could benefit a lot of users.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> It's also strange, in the polling side you collect both the
>>>>>> Read
>>>>>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Write
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> IOps, but on the throttling side you only go for a global
>>>>>> value.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Write IOps are usually much more expensive then Read IOps,
>>>>>> so it
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> seems
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> like a valid use-case where that an admin would set a lower
>>>>>>> value
>>>>>>>>>>> for
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> write
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> IOps vs Read IOps.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Since this only supports KVM at this point I think it would
>>>>>> be
>>>>>>> of
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> great
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> value to at least have the mechanism in place to support
>>>>>> both,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> implementing
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> this later would be a lot of work.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> If a hypervisor doesn't support setting different values for
>>>>>>> read
>>>>>>>>>>> and
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> write you can always sum both up and set that as the total
>>>>>>> limit.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Can you explain why you implemented it this way?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wido
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> The feature includes:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (1) set the maximum rate of VMs (in disk_offering, and
>>>>>> global
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> configuration)
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (2) change the maximum rate of VMs
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (3) limit the disk rate (total bps and iops)
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> JIRA ticket: https://issues.apache.org/****
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> jira/browse/CLOUDSTACK-1192<ht**tps://
>>>>>> issues.apache.org/****
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> jira/browse/CLOUDSTACK-1192<
>>>>>>>>>>>>>>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1192>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <ht**tps://
>>>>>> issues.apache.org/**jira/**browse/CLOUDSTACK-1192<
>>>>>>>>>>>>>>>> http://issues.apache.org/jira/**browse/CLOUDSTACK-1192>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <**
>>>>>>>>>>>>>>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1192<
>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-1192>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> FS (I will update later) :
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/******confluence/display/CLOUDSTACK/******<
>>>>>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/****confluence/display/CLOUDSTACK/****>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/****confluence/display/**CLOUDSTACK/**
>>>>>>> <
>>>>>>>>>>>>>>> https://cwiki.apache.org/**confluence/display/CLOUDSTACK/**>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> VM+Disk+IO+Throttling<https://****
>>>>>>>>> cwiki.apache.org/confluence/****
>>>>>>>>>>> <
>>>>>>>>>>>>>>>> http://cwiki.apache.org/confluence/**>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> display/CLOUDSTACK/VM+Disk+IO+****Throttling<https://cwiki.
>>>>>> **
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>> apache.org/confluence/display/**CLOUDSTACK/VM+Disk+IO+**Throttling
>>>>>>>>>>> <
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Disk+IO+Throttling
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Merge check list :-
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> * Did you check the branch's RAT execution success?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Yes
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> * Are there new dependencies introduced?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> No
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> * What automated testing (unit and integration) is included
>>>>>> in
>>>>>>> the
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> new
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> feature?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Unit tests are added.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> * What testing has been done to check for potential
>>>>>> regressions?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (1) set the bytes rate and IOPS rate on CloudStack UI.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (2) VM operations, including
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> deploy, stop, start, reboot, destroy, expunge. migrate,
>>>>>> restore
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (3) Volume operations, including
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Attach, Detach
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> To review the code, you can try
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> git diff c30057635d04a2396f84c588127d7e******be42e503a7
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> f2e5591b710d04cc86815044f5823e******73a4a58944
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Wei
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/******confluence/display/CLOUDSTACK/******<
>>>>>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/****confluence/display/CLOUDSTACK/****>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>> 
>>>>>> https://cwiki.apache.org/****confluence/display/**CLOUDSTACK/**
>>>>>>> <
>>>>>>>>>>>>>>> https://cwiki.apache.org/**confluence/display/CLOUDSTACK/**>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> VM+Disk+IO+Throttling<https://****
>>>>>>>>> cwiki.apache.org/confluence/****
>>>>>>>>>>> <
>>>>>>>>>>>>>>>> http://cwiki.apache.org/confluence/**>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> display/CLOUDSTACK/VM+Disk+IO+****Throttling<https://cwiki.
>>>>>> **
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>> apache.org/confluence/display/**CLOUDSTACK/VM+Disk+IO+**Throttling
>>>>>>>>>>> <
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Disk+IO+Throttling
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> [2] refs/heads/disk_io_throttling
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> [3]
>>>>>>>>>>>>>>>> https://issues.apache.org/******jira/browse/CLOUDSTACK-1301
>>>>>> <
>>>>>>>>>>>>>>> https://issues.apache.org/****jira/browse/CLOUDSTACK-1301>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <ht**tps://
>>>>>> issues.apache.org/****jira/browse/CLOUDSTACK-1301<
>>>>>>>>>>>>>>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1301>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <ht**tps://
>>>>>> issues.apache.org/**jira/**browse/CLOUDSTACK-1301<
>>>>>>>>>>>>>>>> http://issues.apache.org/jira/**browse/CLOUDSTACK-1301>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <**
>>>>>>>>>>>>>>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1301<
>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-1301>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <ht**tps://
>>>>>> issues.apache.org/****jira/**browse/CLOUDSTACK-2071<
>>>>>>>>>>>>>>>> http://issues.apache.org/**jira/**browse/CLOUDSTACK-2071>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> **<
>>>>>>>>>>>>>>>> http://issues.apache.org/**jira/**browse/CLOUDSTACK-2071<
>>>>>>>>>>>>>>> http://issues.apache.org/jira/**browse/CLOUDSTACK-2071>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <**
>>>>>>>>>>>>>>>> https://issues.apache.org/****jira/browse/CLOUDSTACK-2071<
>>>>>>>>>>>>>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-2071>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> <h**ttps://issues.apache.org/jira/**browse/CLOUDSTACK-2071<
>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-2071>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> (**CLOUDSTACK-1301
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> -     VM Disk I/O Throttling)
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> *Mike Tutkowski*
>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>>>>>> o: 303.746.7302
>>>>>>>>>>>>>>> Advancing the way the world uses the
>>>>>>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>>>>>>>>>> *™*
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> *Mike Tutkowski*
>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> o: 303.746.7302
>>>>>>>>>>> Advancing the way the world uses the
>>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>>>>>> *™*
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> --
>>>>>>>>>> *Mike Tutkowski*
>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>> o: 303.746.7302
>>>>>>>>>> Advancing the way the world uses the
>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>>>>> *™*
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> *Mike Tutkowski*
>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>>> o: 303.746.7302
>>>>>>>> Advancing the way the world uses the cloud<
>>>>>>> http://solidfire.com/solution/overview/?video=play>
>>>>>>>> *™*
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> *Mike Tutkowski*
>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>>>> e: mike.tutkow...@solidfire.com
>>>>>>> o: 303.746.7302
>>>>>>> Advancing the way the world uses the
>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>>>>>> *™*
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> *Mike Tutkowski*
>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>> e: mike.tutkow...@solidfire.com
>>>>> o: 303.746.7302
>>>>> Advancing the way the world uses the cloud<
>> http://solidfire.com/solution/overview/?video=play>
>>>>> *™*
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> *Mike Tutkowski*
>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>> e: mike.tutkow...@solidfire.com
>>>> o: 303.746.7302
>>>> Advancing the way the world uses the cloud<
>> http://solidfire.com/solution/overview/?video=play>
>>>> *™*
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> *Mike Tutkowski*
>>> *Senior CloudStack Developer, SolidFire Inc.*
>>> e: mike.tutkow...@solidfire.com
>>> o: 303.746.7302
>>> Advancing the way the world uses the
>>> cloud<http://solidfire.com/solution/overview/?video=play>
>>> *™*
>> 
>> 
> 
> 
> -- 
> *Mike Tutkowski*
> *Senior CloudStack Developer, SolidFire Inc.*
> e: mike.tutkow...@solidfire.com
> o: 303.746.7302
> Advancing the way the world uses the
> cloud<http://solidfire.com/solution/overview/?video=play>
> *™*

Reply via email to