We do - in some places in the code - use a hash map...like what you describe.
I guess the trade off there would be that the values that contain our numbers would end up being high-level objects instead of numbers (because we don't really know what future values might be). I'm OK with either approach. On Friday, June 20, 2014, Mike Tutkowski <mike.tutkow...@solidfire.com> wrote: > Unfortunately, at the time being, the updateStoragePool API (from the > public-facing API) only takes in bytes, IOPS, and storage tags...not > details (createStoragePool takes in a lot more parameters...including > details). > > So - for now at least - we're a little limited in what the new interface > method can tell storage providers about (unless we wanted to spend time > adding to the parameter list of updateStoragePool). > > On Friday, June 20, 2014, Amit Das <amit....@cloudbyte.com > <javascript:_e(%7B%7D,'cvml','amit....@cloudbyte.com');>> wrote: > >> Hi Mike, >> >> Is there any use case to have a more generic signature for >> updateStoragePool API ? >> >> e.g >> void updateStoragePool(StoragePool storagePool, Map<E,V> updateDetails); >> // not too sure of what should be E & V as of now. To start with E & V >> can be String types or Enums for better static checks. >> >> instead of below >> void updateCapacity(StoragePool storagePool, Long capacityBytes, Long >> capacityIops); >> >> >> >> Regards, >> Amit >> *CloudByte Inc.* <http://www.cloudbyte.com/> >> >> >> On Fri, Jun 20, 2014 at 10:37 AM, Mike Tutkowski < >> mike.tutkow...@solidfire.com> wrote: >> >>> I just wanted to update those who are interested in this thread about >>> work I've done on this over the past couple days. >>> >>> This gist is that I've added a new method to the >>> PrimaryDataStoreLifeCycle interface that has the following signature (this >>> code is not yet checked in): >>> >>> void updateCapacity(StoragePool storagePool, Long capacityBytes, Long >>> capacityIops); >>> >>> This method can be invoked from StorageManagerImpl when the >>> updateStoragePool API is called. >>> >>> This gives the storage plug-in that backs the primary storage in >>> question an opportunity to update the backend storage it represents, if >>> that makes sense to do in your particular case (for example, changing the >>> size and/or IOPS of a volume). >>> >>> There is a related enhancement to the resizeVolume API that I plan to >>> tackle next week. That one will be particularly useful for managed storage >>> plug-ins. >>> >>> Also, I have been collecting input on the generic key/value proposal >>> here: >>> >>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=42566111 >>> >>> That may turn into a considerable amount of work. I was initially >>> thinking it could be fit into 4.5, but it might be 4.6. >>> >>> Thanks for any feedback! >>> >>> >>> On Thu, Jun 12, 2014 at 11:09 PM, Mike Tutkowski < >>> mike.tutkow...@solidfire.com> wrote: >>> >>>> As I think about this more, there are two situations we should cover: >>>> >>>> 1) Non-managed storage that has control over IOPS. >>>> >>>> When you invoke the createStoragePool API, you can pass in capacityIops. >>>> >>>> We should support modifying capacityIops via the updateStoragePool API. >>>> >>>> 2) Managed storage that has control over IOPS. >>>> >>>> In this environment, there is a 1:1 mapping between a SAN volume and a >>>> CloudStack volume. >>>> >>>> This is where we need to augment the resizeVolume API to accept - in a >>>> similar fashion to size - a new value for Min and/or Max IOPS. >>>> >>>> For example, a resizeVolume can be initiated by simply selecting a new >>>> Disk Offering. >>>> >>>> In this situation, the size and IOPS are part of the new Disk Offering >>>> (i.e. neither size nor IOPS can be marked as custom) and when the resize >>>> method of the storage plug-in is invoked, it will have a chance to change >>>> the size and/or IOPS. >>>> >>>> I would say we should perform a bit of analysis in the CloudStack >>>> volume logic to NOT stop resize from being invoked on the storage plug-in >>>> IF the volume size is the same, but the IOPS are different. This way the >>>> volume can be online as long as the user is only changing the IOPS of the >>>> volume. >>>> >>>> I also think it's only a problem for XenServer for the VDI to have its >>>> size changed dynamically. >>>> >>>> I plan to draw a flowchart for this soon. Once I do that I think it >>>> will be easier to talk in detail. >>>> >>>> Thanks! >>>> >>>> >>>> On Thu, Jun 12, 2014 at 12:59 PM, Mike Tutkowski < >>>> mike.tutkow...@solidfire.com> wrote: >>>> >>>>> From what I understand about the resizeVolume API, to change the size >>>>> of a given volume, you must either: >>>>> >>>>> 1) pass in a new Disk Offering (if the current Disk Offering the >>>>> volume uses does not allow for a custom size) >>>>> >>>>> or >>>>> >>>>> 2) pass in the ID of the volume and a new size (if the current Disk >>>>> Offering the volume uses does allow for a custom size) >>>>> >>>>> Either way, if you are shrinking the volume's size, you then have to >>>>> pass in 'true' for the 'shrinkok' parameter. >>>>> >>>>> One thing we should do is support this same concept with IOPS. At the >>>>> time being, both Min and Max IOPS can be custom (set by user) or non >>>>> custom >>>>> (set by admin). This is a direct parallel to custom size or non-custom >>>>> size. If the user is using a non-custom IOPS setting and wants to switch >>>>> to >>>>> a custom IOPS setting, he should be able to do so by switching to a Disk >>>>> Offering with custom IOPS. Of course we should support doing this while >>>>> the >>>>> volume is attached. >>>>> >>>>> If arbitrary key/value pairs can be associated with Disk Offerings, >>>>> then you should be able to get the new key/value pairs by switching to a >>>>> new Disk Offering. We'd want to allow this to work with the volume in the >>>>> attached state, as well. >>>>> >>>>> Perhaps we should allow this all to happen online (volume attached) >>>>> UNLESS doing what we're about to do will change the size of the volume. >>>>> Then we can fail the OP and tell them to detach the volume and re-run the >>>>> OP. >>>>> >>>>> What are you thoughts on that? >>>>> >>>>> Also, I think volumeResize only works for data disks at the time being. >>>>> >>>>> In my mind, volumeResize is a bit of a misnomer now. We are really >>>>> allowing the user to resize their Disk Offering now in terms of not only >>>>> size, but IOPS, and even arbitrary key/value pairs. This is still all done >>>>> by selecting a new Disk Offering (or - if you have a custom size or custom >>>>> IOPS disk offering already - by passing in the ID of the volume and the >>>>> new >>>>> size and/or IOPS). >>>>> >>>>> Let's brainstorm on this a bit and see which way makes sense to go. >>>>> >>>>> Thanks! >>>>> >>>>> >>>>> On Thu, Jun 12, 2014 at 9:48 AM, Punith S <punit...@cloudbyte.com> >>>>> wrote: >>>>> >>>>>> sure mike. >>>>>> >>>>>> and i have one question, >>>>>> >>>>>> which existing volume api are we gonna use for changing disk >>>>>> offerings(properties) dynamically ? >>>>>> since resize api will not allow unless the disk is detached ! >>>>>> >>>>>> thanks. >>>>>> >>>>>> >>>>>> On Thu, Jun 12, 2014 at 11:37 AM, Mike Tutkowski < >>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>> >>>>>>> Sounds good - let me give some thought as to how we should break up >>>>>>> the work. >>>>>>> >>>>>>> My GSoC student from Tunisia will be helping us, as well. >>>>>>> >>>>>>> >>>>>>> On Wed, Jun 11, 2014 at 8:34 AM, Punith S <punit...@cloudbyte.com> >>>>>>> wrote: >>>>>>> >>>>>>>> yes it sounds good, thanks for the proposal mike, >>>>>>>> >>>>>>>> yeah right now i have implemented prototype of my proposal, since >>>>>>>> its not generic we shall implement your proposal for 4.5. >>>>>>>> on the other hand, for 4.5 i'm supporting nfs protocol and resize >>>>>>>> feature for managed storage in xenserver, now trying to implement >>>>>>>> snapshot >>>>>>>> and support root disk for vm's. >>>>>>>> and yes if we can club together, i can start working on this >>>>>>>> proposal for data disk and get the prototype ready. >>>>>>>> what do you think ? >>>>>>>> >>>>>>>> thanks. >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Jun 11, 2014 at 3:53 AM, Mike Tutkowski < >>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>> >>>>>>>>> I'll send out a [PROPOSAL] e-mail so others who may not be >>>>>>>>> following this e-mail thread have a better chance to comment on the >>>>>>>>> feature. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Jun 10, 2014 at 2:58 PM, Mike Tutkowski < >>>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>>> >>>>>>>>>> Here is that design document I was referring to, Punith: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=42566111 >>>>>>>>>> >>>>>>>>>> I've been working with a student in Tunisia who is participating >>>>>>>>>> in Google Summer of Code (GSoC) (I'm his mentor). >>>>>>>>>> >>>>>>>>>> He'll be working on part of this as will I. (He is also working >>>>>>>>>> on another related task not listed here.) >>>>>>>>>> >>>>>>>>>> Feel free to join us, if you have time available, as we can >>>>>>>>>> divide out coding and testing among the three of us. >>>>>>>>>> >>>>>>>>>> Talk to you later! >>>>>>>>>> Mike >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, Jun 10, 2014 at 10:18 AM, Mike Tutkowski < >>>>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>>>> >>>>>>>>>>> I plan to draw up a design document surrounding generic >>>>>>>>>>> key/value pairs today. >>>>>>>>>>> >>>>>>>>>>> Perhaps you can take a look at it when you have time, Punith? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Tue, Jun 10, 2014 at 10:06 AM, Mike Tutkowski < >>>>>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Punith, >>>>>>>>>>>> >>>>>>>>>>>> Yeah, I hear you about the number of permutations involved. >>>>>>>>>>>> >>>>>>>>>>>> Traditionally Compute and Disk Offerings have been immutable. >>>>>>>>>>>> It makes it easier from an accounting point of view for chargeback >>>>>>>>>>>> and >>>>>>>>>>>> billing. >>>>>>>>>>>> >>>>>>>>>>>> You should definitely feel free to extend the CloudStack API. I >>>>>>>>>>>> think NetApp did this for one of their storage features in the >>>>>>>>>>>> recent past. >>>>>>>>>>>> This way vendor-specific capabilities can be more easily offered >>>>>>>>>>>> without >>>>>>>>>>>> making it look like all vendors support those particular features. >>>>>>>>>>>> >>>>>>>>>>>> I do not yet have any code in master related to generic >>>>>>>>>>>> keys/values. I'm still designing this. >>>>>>>>>>>> >>>>>>>>>>>> How does your schedule look for the 4.5 release? Do you think >>>>>>>>>>>> you might have available cycles to help out with this generic >>>>>>>>>>>> key/value >>>>>>>>>>>> implementation? >>>>>>>>>>>> >>>>>>>>>>>> Talk to you later! >>>>>>>>>>>> Mike >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jun 10, 2014 at 7:09 AM, Punith S < >>>>>>>>>>>> punit...@cloudbyte.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> hi mike, >>>>>>>>>>>>> >>>>>>>>>>>>> thanks for the reply, i like your approach which is a very >>>>>>>>>>>>> generic way and also we only need to do a few changes to the >>>>>>>>>>>>> current >>>>>>>>>>>>> cloudstack, >>>>>>>>>>>>> >>>>>>>>>>>>> but on the other hand we are tying every property of the >>>>>>>>>>>>> vendor to a disk offering through key/value pairs, since we offer >>>>>>>>>>>>> lot of >>>>>>>>>>>>> properties like i mentioned, this can create a lot of permutation >>>>>>>>>>>>> combinations of disk offerings, for say if i need to turn >>>>>>>>>>>>> deduplication On >>>>>>>>>>>>> for a specific volume , should i have to create a new disk >>>>>>>>>>>>> offering having >>>>>>>>>>>>> current properties with deduplication On? >>>>>>>>>>>>> >>>>>>>>>>>>> is this approach already implemented in the current master ? >>>>>>>>>>>>> >>>>>>>>>>>>> and also like you mentioned about exposing a new api, is it >>>>>>>>>>>>> okay if i expose our own api in my util by extending the >>>>>>>>>>>>> PlugableService >>>>>>>>>>>>> like in network plugins ? >>>>>>>>>>>>> >>>>>>>>>>>>> thanks. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Jun 10, 2014 at 1:17 AM, Mike Tutkowski < >>>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Allow me to follow this up with more detail (with regards to >>>>>>>>>>>>>> what Chris and I talked about): >>>>>>>>>>>>>> >>>>>>>>>>>>>> As you are aware, today the way you associate a Compute >>>>>>>>>>>>>> Offering (CO) or a Disk Offering (DO) with a Primary Storage >>>>>>>>>>>>>> (PS) is via >>>>>>>>>>>>>> storage tagging. >>>>>>>>>>>>>> >>>>>>>>>>>>>> This has some benefits and drawbacks. >>>>>>>>>>>>>> >>>>>>>>>>>>>> One benefit is being able to have some level of vendor >>>>>>>>>>>>>> independence from the point of view of the CO or DO. For >>>>>>>>>>>>>> example, if the >>>>>>>>>>>>>> storage tag of a DO is "Fast", then this can be satisfied by PS >>>>>>>>>>>>>> that >>>>>>>>>>>>>> describes itself as "Fast", regardless of vendor. >>>>>>>>>>>>>> >>>>>>>>>>>>>> A major drawback with the storage-tagging approach, however, >>>>>>>>>>>>>> is that you are not easily able to leverage vendor-specific >>>>>>>>>>>>>> features, which >>>>>>>>>>>>>> is often why you bought storage from the vendor in question to >>>>>>>>>>>>>> begin with. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Ideally we do not want to add each vendor's features into the >>>>>>>>>>>>>> system as properties that can be seen by the admin regardless of >>>>>>>>>>>>>> whether or >>>>>>>>>>>>>> not the underlying storage he's actually using supports the >>>>>>>>>>>>>> feature in >>>>>>>>>>>>>> question. >>>>>>>>>>>>>> >>>>>>>>>>>>>> This coarse approach, however, was sort of business as usual >>>>>>>>>>>>>> when I started in with CloudStack 1.5 years ago. >>>>>>>>>>>>>> >>>>>>>>>>>>>> That being the case, when I added QoS options to CS, I did so >>>>>>>>>>>>>> in a way where the admin would see Min IOPS and Max IOPS options >>>>>>>>>>>>>> regardless >>>>>>>>>>>>>> of whether or not his storage actually supported those controls >>>>>>>>>>>>>> (to >>>>>>>>>>>>>> mitigate this a bit in the GUI, the admin has to explicitly >>>>>>>>>>>>>> select "Storage >>>>>>>>>>>>>> QoS" from a combobox). >>>>>>>>>>>>>> >>>>>>>>>>>>>> We leverage the same use model with Hypervisor QoS: The admin >>>>>>>>>>>>>> sees these options regardless of whether or not they actually >>>>>>>>>>>>>> apply on the >>>>>>>>>>>>>> hypervisor where the VM gets deployed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Going forward, we want to implement a more fine-grain and >>>>>>>>>>>>>> generic approach. >>>>>>>>>>>>>> >>>>>>>>>>>>>> We would like to have a storage provider field for the CO and >>>>>>>>>>>>>> DO windows (this equates to the name of one and only one storage >>>>>>>>>>>>>> provider). >>>>>>>>>>>>>> If the admin inputs a specific storage provider and does not use >>>>>>>>>>>>>> the >>>>>>>>>>>>>> storage tags field, he can enter in an arbitrary number of >>>>>>>>>>>>>> key/value pairs >>>>>>>>>>>>>> in another text field (perhaps we would provide a nice entry >>>>>>>>>>>>>> dialog to make >>>>>>>>>>>>>> this easier in the GUI). These key value pairs can be passed >>>>>>>>>>>>>> into the >>>>>>>>>>>>>> storage driver when it's asked to create (or update) a volume >>>>>>>>>>>>>> and the >>>>>>>>>>>>>> storage driver can decide what each and every key/value pair >>>>>>>>>>>>>> means. >>>>>>>>>>>>>> >>>>>>>>>>>>>> What do you think about this approach? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, Jun 9, 2014 at 1:14 PM, Mike Tutkowski < >>>>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Punith, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> This kind of a feature is something Chris Suich and I >>>>>>>>>>>>>>> discussed a while back. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We talked about leveraging arbitrary key/value pairs to make >>>>>>>>>>>>>>> this happen (OpenStack does something similar). The key/value >>>>>>>>>>>>>>> pairs would >>>>>>>>>>>>>>> be vendor specific. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If we take a key/value approach, we might be able to make >>>>>>>>>>>>>>> this all work the way things work today when the user wants to >>>>>>>>>>>>>>> change an >>>>>>>>>>>>>>> existing Compute Offering and/or Disk Offering. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> For example, the user would pick a new Compute Offering >>>>>>>>>>>>>>> (with presumably has different key/value pairs) and CloudStack >>>>>>>>>>>>>>> could inform >>>>>>>>>>>>>>> the applicable storage provider, who could update the volume in >>>>>>>>>>>>>>> question. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> This way we don't need to introduce a new API command and >>>>>>>>>>>>>>> the use model for the user doesn't really change. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> What are you thoughts on this? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Mon, Jun 9, 2014 at 8:08 AM, Punith S < >>>>>>>>>>>>>>> punit...@cloudbyte.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> hi guys, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> since most of the third party storage providers have been >>>>>>>>>>>>>>>> implementing 1:1 mapping(managed storage) between a >>>>>>>>>>>>>>>> volume(dataset) and a >>>>>>>>>>>>>>>> vm disk(vdi/vmdk) for guaranteeing the Qos, i would like to >>>>>>>>>>>>>>>> propose a new >>>>>>>>>>>>>>>> feature to dynamically change the volume properties supported >>>>>>>>>>>>>>>> by storage >>>>>>>>>>>>>>>> vendors such as IOPS, Deduplication, Compression, Grace, >>>>>>>>>>>>>>>> Syncronization, >>>>>>>>>>>>>>>> Latency etc, depending on properties and features supported by >>>>>>>>>>>>>>>> respective >>>>>>>>>>>>>>>> storage vendors. hence providing more flexibility for users. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> in case of using default cloudstack storage provider, we >>>>>>>>>>>>>>>> can change the properties of the vdi/vmdk files apart from >>>>>>>>>>>>>>>> resizing the >>>>>>>>>>>>>>>> volume(vdi/vmdk). >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> changes in management server include, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> new async web api ChangeVolumePropertiesCmd, >>>>>>>>>>>>>>>> new method in VolumeApiService for vo and dao validation >>>>>>>>>>>>>>>> implementations. >>>>>>>>>>>>>>>> new method in VolumeServiceManager for supporting callback >>>>>>>>>>>>>>>> and calling the respective storage provider driver's >>>>>>>>>>>>>>>> implementation. >>>>>>>>>>>>>>>> new method in PrimaryDataStoreDriver interface for >>>>>>>>>>>>>>>> implementing respective features according to their storage >>>>>>>>>>>>>>>> product. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> changes in UI include, >>>>>>>>>>>>>>>> new changing volume properties widget in volume section, >>>>>>>>>>>>>>>> showing different properties depending upon listed storage >>>>>>>>>>>>>>>> providers. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> any suggestions and feedbacks ? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> thanks >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> regards, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> punith s >>>>>>>>>>>>>>>> cloudbyte.com >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> *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>*™* >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> regards, >>>>>>>>>>>>> >>>>>>>>>>>>> punith s >>>>>>>>>>>>> cloudbyte.com >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> *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>*™* >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> regards, >>>>>>>> >>>>>>>> punith s >>>>>>>> cloudbyte.com >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> *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>*™* >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> regards, >>>>>> >>>>>> punith s >>>>>> cloudbyte.com >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *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 > <javascript:_e(%7B%7D,'cvml','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>*™*