In fact, we do use a hash-map approach for some KVM storage code, too. Let's do that here, as well.
I'll make that change. Thanks On Friday, June 20, 2014, Mike Tutkowski <mike.tutkow...@solidfire.com> wrote: > 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 > <javascript:_e(%7B%7D,'cvml','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> 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 >> 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>*™*