Yeah, I think it would be nice if it supported Live Migration.

That's kind of why I was initially leaning toward SharedMountPoint and just
doing the work ahead of time to get things in a state where the current
code could run with it.


On Fri, Sep 13, 2013 at 8:00 PM, Marcus Sorensen <shadow...@gmail.com>wrote:

> No, as that would rely on virtualized network/iscsi initiator inside the
> vm, which also sucks. I mean attach /dev/sdx (your lun on hypervisor) as a
> disk to the VM, rather than attaching some image file that resides on a
> filesystem, mounted on the host, living on a target.
>
> Actually, if you plan on the storage supporting live migration I think
> this is the only way. You can't put a filesystem on it and mount it in two
> places to facilitate migration unless its a clustered filesystem, in which
> case you're back to shared mount point.
>
> As far as I'm aware, the xenserver SR style is basically LVM with a xen
> specific cluster management, a custom CLVM. They don't use a filesystem
> either.
> On Sep 13, 2013 7:44 PM, "Mike Tutkowski" <mike.tutkow...@solidfire.com>
> wrote:
>
>> When you say, "wire up the lun directly to the vm," do you mean
>> circumventing the hypervisor? I didn't think we could do that in CS.
>> OpenStack, on the other hand, always circumvents the hypervisor, as far as
>> I know.
>>
>>
>> On Fri, Sep 13, 2013 at 7:40 PM, Marcus Sorensen <shadow...@gmail.com>wrote:
>>
>>> Better to wire up the lun directly to the vm unless there is a good
>>> reason not to.
>>>  On Sep 13, 2013 7:40 PM, "Marcus Sorensen" <shadow...@gmail.com> wrote:
>>>
>>>> You could do that, but as mentioned I think its a mistake to go to the
>>>> trouble of creating a 1:1 mapping of CS volumes to luns and then putting a
>>>> filesystem on it, mounting it, and then putting a QCOW2 or even RAW disk
>>>> image on that filesystem. You'll lose a lot of iops along the way, and have
>>>> more overhead with the filesystem and its journaling, etc.
>>>> On Sep 13, 2013 7:33 PM, "Mike Tutkowski" <mike.tutkow...@solidfire.com>
>>>> wrote:
>>>>
>>>>> Ah, OK, I didn't know that was such new ground in KVM with CS.
>>>>>
>>>>> So, the way people use our SAN with KVM and CS today is by selecting
>>>>> SharedMountPoint and specifying the location of the share.
>>>>>
>>>>> They can set up their share using Open iSCSI by discovering their
>>>>> iSCSI target, logging in to it, then mounting it somewhere on their file
>>>>> system.
>>>>>
>>>>> Would it make sense for me to just do that discovery, logging in, and
>>>>> mounting behind the scenes for them and letting the current code manage 
>>>>> the
>>>>> rest as it currently does?
>>>>>
>>>>>
>>>>> On Fri, Sep 13, 2013 at 7:27 PM, Marcus Sorensen 
>>>>> <shadow...@gmail.com>wrote:
>>>>>
>>>>>> Oh, hypervisor snapshots are a bit different. I need to catch up on
>>>>>> the work done in KVM, but this is basically just disk snapshots + memory
>>>>>> dump. I still think disk snapshots would preferably be handled by the 
>>>>>> SAN,
>>>>>> and then memory dumps can go to secondary storage or something else. This
>>>>>> is relatively new ground with CS and KVM, so we will want to see how 
>>>>>> others
>>>>>> are planning theirs.
>>>>>>  On Sep 13, 2013 7:20 PM, "Marcus Sorensen" <shadow...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Let me back up and say I don't think you'd use a vdi style on an
>>>>>>> iscsi lun. I think you'd want to treat it as a RAW format. Otherwise 
>>>>>>> you're
>>>>>>> putting a filesystem on your lun, mounting it, creating a QCOW2 disk 
>>>>>>> image,
>>>>>>> and that seems unnecessary and a performance killer.
>>>>>>>
>>>>>>> So probably attaching the raw iscsi lun as a disk to the VM, and
>>>>>>> handling snapshots on the San side via the storage plugin is best. My
>>>>>>> impression from the storage plugin refactor was that there was a 
>>>>>>> snapshot
>>>>>>> service that would allow the San to handle snapshots.
>>>>>>> On Sep 13, 2013 7:15 PM, "Marcus Sorensen" <shadow...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Ideally volume snapshots can be handled by the SAN back end, if the
>>>>>>>> SAN supports it. The cloudstack mgmt server could call your plugin for
>>>>>>>> volume snapshot and it would be hypervisor agnostic. As far as space, 
>>>>>>>> that
>>>>>>>> would depend on how your SAN handles it. With ours, we carve out luns 
>>>>>>>> from
>>>>>>>> a pool, and the snapshot spave comes from the pool and is independent 
>>>>>>>> of
>>>>>>>> the LUN size the host sees.
>>>>>>>> On Sep 13, 2013 7:10 PM, "Mike Tutkowski" <
>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>>>>
>>>>>>>>> Hey Marcus,
>>>>>>>>>
>>>>>>>>> I wonder if the iSCSI storage pool type for libvirt won't work
>>>>>>>>> when you take into consideration hypervisor snapshots?
>>>>>>>>>
>>>>>>>>> On XenServer, when you take a hypervisor snapshot, the VDI for the
>>>>>>>>> snapshot is placed on the same storage repository as the volume is on.
>>>>>>>>>
>>>>>>>>> Same idea for VMware, I believe.
>>>>>>>>>
>>>>>>>>> So, what would happen in my case (let's say for XenServer and
>>>>>>>>> VMware for 4.3 because I don't support hypervisor snapshots in 4.2) 
>>>>>>>>> is I'd
>>>>>>>>> make an iSCSI target that is larger than what the user requested for 
>>>>>>>>> the
>>>>>>>>> CloudStack volume (which is fine because our SAN thinly provisions 
>>>>>>>>> volumes,
>>>>>>>>> so the space is not actually used unless it needs to be). The 
>>>>>>>>> CloudStack
>>>>>>>>> volume would be the only "object" on the SAN volume until a hypervisor
>>>>>>>>> snapshot is taken. This snapshot would also reside on the SAN volume.
>>>>>>>>>
>>>>>>>>> If this is also how KVM behaves and there is no creation of LUNs
>>>>>>>>> within an iSCSI target from libvirt (which, even if there were 
>>>>>>>>> support for
>>>>>>>>> this, our SAN currently only allows one LUN per iSCSI target), then I 
>>>>>>>>> don't
>>>>>>>>> see how using this model will work.
>>>>>>>>>
>>>>>>>>> Perhaps I will have to go enhance the current way this works with
>>>>>>>>> DIR?
>>>>>>>>>
>>>>>>>>> What do you think?
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Sep 13, 2013 at 6:28 PM, Mike Tutkowski <
>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>
>>>>>>>>>> That appears to be the way it's used for iSCSI access today.
>>>>>>>>>>
>>>>>>>>>> I suppose I could go that route, too, but I might as well
>>>>>>>>>> leverage what libvirt has for iSCSI instead.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Sep 13, 2013 at 6:26 PM, Marcus Sorensen <
>>>>>>>>>> shadow...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> To your question about SharedMountPoint, I believe it just acts
>>>>>>>>>>> like a
>>>>>>>>>>> 'DIR' storage type or something similar to that. The end-user is
>>>>>>>>>>> responsible for mounting a file system that all KVM hosts can
>>>>>>>>>>> access,
>>>>>>>>>>> and CloudStack is oblivious to what is providing the storage. It
>>>>>>>>>>> could
>>>>>>>>>>> be NFS, or OCFS2, or some other clustered filesystem, cloudstack
>>>>>>>>>>> just
>>>>>>>>>>> knows that the provided directory path has VM images.
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Sep 13, 2013 at 6:23 PM, Marcus Sorensen <
>>>>>>>>>>> shadow...@gmail.com> wrote:
>>>>>>>>>>> > Oh yes, you can use NFS, LVM, and iSCSI all at the same time.
>>>>>>>>>>> > Multiples, in fact.
>>>>>>>>>>> >
>>>>>>>>>>> > On Fri, Sep 13, 2013 at 6:19 PM, Mike Tutkowski
>>>>>>>>>>> > <mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>>> >> Looks like you can have multiple storage pools:
>>>>>>>>>>> >>
>>>>>>>>>>> >> mtutkowski@ubuntu:~$ virsh pool-list
>>>>>>>>>>> >> Name                 State      Autostart
>>>>>>>>>>> >> -----------------------------------------
>>>>>>>>>>> >> default              active     yes
>>>>>>>>>>> >> iSCSI                active     no
>>>>>>>>>>> >>
>>>>>>>>>>> >>
>>>>>>>>>>> >> On Fri, Sep 13, 2013 at 6:12 PM, Mike Tutkowski
>>>>>>>>>>> >> <mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> Reading through the docs you pointed out.
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> I see what you're saying now.
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> You can create an iSCSI (libvirt) storage pool based on an
>>>>>>>>>>> iSCSI target.
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> In my case, the iSCSI target would only have one LUN, so
>>>>>>>>>>> there would only
>>>>>>>>>>> >>> be one iSCSI (libvirt) storage volume in the (libvirt)
>>>>>>>>>>> storage pool.
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> As you say, my plug-in creates and destroys iSCSI
>>>>>>>>>>> targets/LUNs on the
>>>>>>>>>>> >>> SolidFire SAN, so it is not a problem that libvirt does not
>>>>>>>>>>> support
>>>>>>>>>>> >>> creating/deleting iSCSI targets/LUNs.
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> It looks like I need to test this a bit to see if libvirt
>>>>>>>>>>> supports
>>>>>>>>>>> >>> multiple iSCSI storage pools (as you mentioned, since each
>>>>>>>>>>> one of its
>>>>>>>>>>> >>> storage pools would map to one of my iSCSI targets/LUNs).
>>>>>>>>>>> >>>
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> On Fri, Sep 13, 2013 at 5:58 PM, Mike Tutkowski
>>>>>>>>>>> >>> <mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> LibvirtStoragePoolDef has this type:
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>     public enum poolType {
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         ISCSI("iscsi"), NETFS("netfs"), LOGICAL("logical"),
>>>>>>>>>>> DIR("dir"),
>>>>>>>>>>> >>>> RBD("rbd");
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         String _poolType;
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         poolType(String poolType) {
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>             _poolType = poolType;
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         }
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         @Override
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         public String toString() {
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>             return _poolType;
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>         }
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>     }
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> It doesn't look like the iSCSI type is currently being
>>>>>>>>>>> used, but I'm
>>>>>>>>>>> >>>> understanding more what you were getting at.
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> Can you tell me for today (say, 4.2), when someone selects
>>>>>>>>>>> the
>>>>>>>>>>> >>>> SharedMountPoint option and uses it with iSCSI, is that the
>>>>>>>>>>> "netfs" option
>>>>>>>>>>> >>>> above or is that just for NFS?
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> Thanks!
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> On Fri, Sep 13, 2013 at 5:50 PM, Marcus Sorensen <
>>>>>>>>>>> shadow...@gmail.com>
>>>>>>>>>>> >>>> wrote:
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> Take a look at this:
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> http://libvirt.org/storage.html#StorageBackendISCSI
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> "Volumes must be pre-allocated on the iSCSI server, and
>>>>>>>>>>> cannot be
>>>>>>>>>>> >>>>> created via the libvirt APIs.", which I believe your
>>>>>>>>>>> plugin will take
>>>>>>>>>>> >>>>> care of. Libvirt just does the work of logging in and
>>>>>>>>>>> hooking it up to
>>>>>>>>>>> >>>>> the VM (I believe the Xen api does that work in the Xen
>>>>>>>>>>> stuff).
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> What I'm not sure about is whether this provides a 1:1
>>>>>>>>>>> mapping, or if
>>>>>>>>>>> >>>>> it just allows you to register 1 iscsi device as a pool.
>>>>>>>>>>> You may need
>>>>>>>>>>> >>>>> to write some test code or read up a bit more about this.
>>>>>>>>>>> Let us know.
>>>>>>>>>>> >>>>> If it doesn't, you may just have to write your own storage
>>>>>>>>>>> adaptor
>>>>>>>>>>> >>>>> rather than changing LibvirtStorageAdaptor.java.  We can
>>>>>>>>>>> cross that
>>>>>>>>>>> >>>>> bridge when we get there.
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> As far as interfacing with libvirt, see the java bindings
>>>>>>>>>>> doc.
>>>>>>>>>>> >>>>> http://libvirt.org/sources/java/javadoc/  Normally,
>>>>>>>>>>> you'll see a
>>>>>>>>>>> >>>>> connection object be made, then calls made to that 'conn'
>>>>>>>>>>> object. You
>>>>>>>>>>> >>>>> can look at the LibvirtStorageAdaptor to see how that is
>>>>>>>>>>> done for
>>>>>>>>>>> >>>>> other pool types, and maybe write some test java code to
>>>>>>>>>>> see if you
>>>>>>>>>>> >>>>> can interface with libvirt and register iscsi storage
>>>>>>>>>>> pools before you
>>>>>>>>>>> >>>>> get started.
>>>>>>>>>>> >>>>>
>>>>>>>>>>> >>>>> On Fri, Sep 13, 2013 at 5:31 PM, Mike Tutkowski
>>>>>>>>>>> >>>>> <mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>>> >>>>> > So, Marcus, I need to investigate libvirt more, but you
>>>>>>>>>>> figure it
>>>>>>>>>>> >>>>> > supports
>>>>>>>>>>> >>>>> > connecting to/disconnecting from iSCSI targets, right?
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> > On Fri, Sep 13, 2013 at 5:29 PM, Mike Tutkowski
>>>>>>>>>>> >>>>> > <mike.tutkow...@solidfire.com> wrote:
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >> OK, thanks, Marcus
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >> I am currently looking through some of the classes you
>>>>>>>>>>> pointed out
>>>>>>>>>>> >>>>> >> last
>>>>>>>>>>> >>>>> >> week or so.
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >> On Fri, Sep 13, 2013 at 5:26 PM, Marcus Sorensen
>>>>>>>>>>> >>>>> >> <shadow...@gmail.com>
>>>>>>>>>>> >>>>> >> wrote:
>>>>>>>>>>> >>>>> >>>
>>>>>>>>>>> >>>>> >>> Yes, my guess is that you will need the iscsi
>>>>>>>>>>> initiator utilities
>>>>>>>>>>> >>>>> >>> installed. There should be standard packages for any
>>>>>>>>>>> distro. Then
>>>>>>>>>>> >>>>> >>> you'd call
>>>>>>>>>>> >>>>> >>> an agent storage adaptor to do the initiator login.
>>>>>>>>>>> See the info I
>>>>>>>>>>> >>>>> >>> sent
>>>>>>>>>>> >>>>> >>> previously about LibvirtStorageAdaptor.java and
>>>>>>>>>>> libvirt iscsi
>>>>>>>>>>> >>>>> >>> storage type
>>>>>>>>>>> >>>>> >>> to see if that fits your need.
>>>>>>>>>>> >>>>> >>>
>>>>>>>>>>> >>>>> >>> On Sep 13, 2013 4:55 PM, "Mike Tutkowski"
>>>>>>>>>>> >>>>> >>> <mike.tutkow...@solidfire.com>
>>>>>>>>>>> >>>>> >>> wrote:
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> Hi,
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> As you may remember, during the 4.2 release I
>>>>>>>>>>> developed a SolidFire
>>>>>>>>>>> >>>>> >>>> (storage) plug-in for CloudStack.
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> This plug-in was invoked by the storage framework at
>>>>>>>>>>> the necessary
>>>>>>>>>>> >>>>> >>>> times
>>>>>>>>>>> >>>>> >>>> so that I could dynamically create and delete volumes
>>>>>>>>>>> on the
>>>>>>>>>>> >>>>> >>>> SolidFire SAN
>>>>>>>>>>> >>>>> >>>> (among other activities).
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> This is necessary so I can establish a 1:1 mapping
>>>>>>>>>>> between a
>>>>>>>>>>> >>>>> >>>> CloudStack
>>>>>>>>>>> >>>>> >>>> volume and a SolidFire volume for QoS.
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> In the past, CloudStack always expected the admin to
>>>>>>>>>>> create large
>>>>>>>>>>> >>>>> >>>> volumes ahead of time and those volumes would likely
>>>>>>>>>>> house many
>>>>>>>>>>> >>>>> >>>> root and
>>>>>>>>>>> >>>>> >>>> data disks (which is not QoS friendly).
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> To make this 1:1 mapping scheme work, I needed to
>>>>>>>>>>> modify logic in
>>>>>>>>>>> >>>>> >>>> the
>>>>>>>>>>> >>>>> >>>> XenServer and VMware plug-ins so they could
>>>>>>>>>>> create/delete storage
>>>>>>>>>>> >>>>> >>>> repositories/datastores as needed.
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> For 4.3 I want to make this happen with KVM.
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> I'm coming up to speed with how this might work on
>>>>>>>>>>> KVM, but I'm
>>>>>>>>>>> >>>>> >>>> still
>>>>>>>>>>> >>>>> >>>> pretty new to KVM.
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> Does anyone familiar with KVM know how I will need to
>>>>>>>>>>> interact with
>>>>>>>>>>> >>>>> >>>> the
>>>>>>>>>>> >>>>> >>>> iSCSI target? For example, will I have to expect Open
>>>>>>>>>>> iSCSI will be
>>>>>>>>>>> >>>>> >>>> installed on the KVM host and use it for this to work?
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> Thanks for any suggestions,
>>>>>>>>>>> >>>>> >>>> Mike
>>>>>>>>>>> >>>>> >>>>
>>>>>>>>>>> >>>>> >>>> --
>>>>>>>>>>> >>>>> >>>> Mike Tutkowski
>>>>>>>>>>> >>>>> >>>> Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >>>>> >>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >>>>> >>>> o: 303.746.7302
>>>>>>>>>>> >>>>> >>>> Advancing the way the world uses the cloud™
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >>
>>>>>>>>>>> >>>>> >> --
>>>>>>>>>>> >>>>> >> Mike Tutkowski
>>>>>>>>>>> >>>>> >> Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >>>>> >> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >>>>> >> o: 303.746.7302
>>>>>>>>>>> >>>>> >> Advancing the way the world uses the cloud™
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> >
>>>>>>>>>>> >>>>> > --
>>>>>>>>>>> >>>>> > Mike Tutkowski
>>>>>>>>>>> >>>>> > Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >>>>> > e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >>>>> > o: 303.746.7302
>>>>>>>>>>> >>>>> > Advancing the way the world uses the cloud™
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>>
>>>>>>>>>>> >>>> --
>>>>>>>>>>> >>>> Mike Tutkowski
>>>>>>>>>>> >>>> Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >>>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >>>> o: 303.746.7302
>>>>>>>>>>> >>>> Advancing the way the world uses the cloud™
>>>>>>>>>>> >>>
>>>>>>>>>>> >>>
>>>>>>>>>>> >>>
>>>>>>>>>>> >>>
>>>>>>>>>>> >>> --
>>>>>>>>>>> >>> Mike Tutkowski
>>>>>>>>>>> >>> Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >>> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >>> o: 303.746.7302
>>>>>>>>>>> >>> Advancing the way the world uses the cloud™
>>>>>>>>>>> >>
>>>>>>>>>>> >>
>>>>>>>>>>> >>
>>>>>>>>>>> >>
>>>>>>>>>>> >> --
>>>>>>>>>>> >> Mike Tutkowski
>>>>>>>>>>> >> Senior CloudStack Developer, SolidFire Inc.
>>>>>>>>>>> >> e: mike.tutkow...@solidfire.com
>>>>>>>>>>> >> o: 303.746.7302
>>>>>>>>>>> >> Advancing the way the world uses the cloud™
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *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