This is a newer link, Marcus:

https://github.com/mike-tutkowski/incubator-cloudstack/commit/e84de7577ad38fea88d1492d4949672d1989889b

I just rebased on top of master today.


On Thu, Oct 24, 2013 at 3:46 PM, Mike Tutkowski <
mike.tutkow...@solidfire.com> wrote:

> Hey Marcus,
>
> If you're interested in running the simulator against your code + my code,
> I have it on GitHub here:
>
>
> https://github.com/mike-tutkowski/incubator-cloudstack/commit/776f3eb9dda45745f43e6765b026d34fbc6be072
>
> Thanks!
>
>
> On Wed, Oct 23, 2013 at 11:06 PM, Mike Tutkowski <
> mike.tutkow...@solidfire.com> wrote:
>
>> I'm trying to attach my diff to https://reviews.apache.org/r/13865/, but
>> I don't see the necessary buttons.
>>
>> I wonder if I need to get edit access back again? We had trouble with the
>> Wiki. Was this also impacted?
>>
>>
>> On Wed, Oct 23, 2013 at 10:47 PM, Mike Tutkowski <
>> mike.tutkow...@solidfire.com> wrote:
>>
>>> Sure, I can create a diff file and attach it to Review Board.
>>>
>>>
>>> On Wed, Oct 23, 2013 at 10:40 PM, Marcus Sorensen 
>>> <shadow...@gmail.com>wrote:
>>>
>>>> Sure. The majority of it only affects people who are on your storage
>>>> anyway. Perhaps you can post a patch and I can run it through the
>>>> simulator to verify that the minor change to the existing code hasn't
>>>> broken the standard storages. I don't think it is since I've
>>>> thoroughly tested the code I posted, but I know there were some
>>>> additional changes.
>>>>
>>>> On Wed, Oct 23, 2013 at 10:35 PM, Mike Tutkowski
>>>> <mike.tutkow...@solidfire.com> wrote:
>>>> > OK, Marcus, I made the change to detect my volumes and it seems to
>>>> work just
>>>> > fine.
>>>> >
>>>> > Perhaps another day of testing and we can check this code in. What do
>>>> you
>>>> > think?
>>>> >
>>>> >
>>>> > On Wed, Oct 23, 2013 at 9:14 PM, Mike Tutkowski
>>>> > <mike.tutkow...@solidfire.com> wrote:
>>>> >>
>>>> >> Thanks, Marcus...I hadn't read that note, but that makes sense.
>>>> >>
>>>> >> Yes, that must be the root disk for the VM. I can put in code, as you
>>>> >> recommend, to handle only my volumes.
>>>> >>
>>>> >>
>>>> >> On Wed, Oct 23, 2013 at 5:37 PM, Marcus Sorensen <
>>>> shadow...@gmail.com>
>>>> >> wrote:
>>>> >>>
>>>> >>> It should be sending the path info for each disk per the XML of the
>>>> >>> VM... so it will send all disks regardless of whether or not your
>>>> >>> adaptor manages that disk, and it's up to your adaptor to ignore any
>>>> >>> that aren't managed by it. There should be notes to that effect in
>>>> the
>>>> >>> code near the disconnectPhysicalDisk interface in StorageAdaptor:
>>>> >>>
>>>> >>>     // given local path to file/device (per Libvirt XML), 1) check
>>>> >>> that device is
>>>> >>>     // handled by your adaptor, return false if not. 2) clean up
>>>> >>> device, return true
>>>> >>>     public boolean disconnectPhysicalDiskByPath(String localPath);
>>>> >>>
>>>> >>> Since we only have XML disk definitions when we stop or migrate a
>>>> VM,
>>>> >>> we have to try all adaptors against all defined disks. So in your
>>>> >>> disconnectPhysicalDisk you might do something like check that the
>>>> path
>>>> >>> starts with '/dev/disk/by-path' and contains 'iscs-iqn' (maybe
>>>> there's
>>>> >>> some way that's more robust like checking the full path against a
>>>> lun
>>>> >>> listing or something). If it doesn't match, then your
>>>> >>> disconnectPhysicalDisk just does nothing.
>>>> >>>
>>>> >>> I assume this is a root disk or some other local storage disk. If
>>>> it's
>>>> >>> not, then your VM XML is messed up somehow.
>>>> >>>
>>>> >>> On Wed, Oct 23, 2013 at 5:01 PM, Mike Tutkowski
>>>> >>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> > I found the problem.
>>>> >>> >
>>>> >>> > disconnectPhysicalDiskByPath is being passed in (in my situation)
>>>> the
>>>> >>> > following:
>>>> >>> >
>>>> >>> > /var/lib/libvirt/images/9887d511-8dc7-4cb4-96f9-01230fe4bbb6
>>>> >>> >
>>>> >>> > Due to the name of the method, my code was expecting data such as
>>>> the
>>>> >>> > following:
>>>> >>> >
>>>> >>> >
>>>> >>> >
>>>> /dev/disk/by-path/ip-192.168.233.10:3260-iscsi-iqn.2012-03.com.solidfire:volume1-lun-0
>>>> >>> >
>>>> >>> > Was it intentional to send the data into this method in the
>>>> current
>>>> >>> > way?
>>>> >>> >
>>>> >>> >
>>>> >>> > On Wed, Oct 23, 2013 at 1:57 PM, Mike Tutkowski
>>>> >>> > <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>
>>>> >>> >> You know, I forgot we supposed to be doing that! :)
>>>> Multi-tasking too
>>>> >>> >> much
>>>> >>> >> today, I guess.
>>>> >>> >>
>>>> >>> >> Anyways, it must not be working because I still had a hypervisor
>>>> >>> >> connection after I shut down the VM.
>>>> >>> >>
>>>> >>> >> Let me investigate.
>>>> >>> >>
>>>> >>> >>
>>>> >>> >> On Wed, Oct 23, 2013 at 1:48 PM, Marcus Sorensen <
>>>> shadow...@gmail.com>
>>>> >>> >> wrote:
>>>> >>> >>>
>>>> >>> >>> Are we not disconnecting when we stop the vm? There's a method
>>>> for
>>>> >>> >>> it, we
>>>> >>> >>> should be. disconnectPhysicalDiskViaVmSpec
>>>> >>> >>>
>>>> >>> >>> On Oct 23, 2013 1:28 PM, "Mike Tutkowski"
>>>> >>> >>> <mike.tutkow...@solidfire.com>
>>>> >>> >>> wrote:
>>>> >>> >>>>
>>>> >>> >>>> I see one problem for us now, Marcus.
>>>> >>> >>>>
>>>> >>> >>>> * You have a running VM that you attach a volume to.
>>>> >>> >>>> * You stop the VM.
>>>> >>> >>>> * You detach the volume.
>>>> >>> >>>> * You start up the VM.
>>>> >>> >>>>
>>>> >>> >>>> The VM will not be connected to the volume (which is good),
>>>> but the
>>>> >>> >>>> hypervisor will still be connected to the volume.
>>>> >>> >>>>
>>>> >>> >>>> It would be great if we actually sent a command to the last
>>>> host ID
>>>> >>> >>>> of
>>>> >>> >>>> the stopped VM when detaching a volume (to have the hypervisor
>>>> >>> >>>> disconnect
>>>> >>> >>>> from the volume).
>>>> >>> >>>>
>>>> >>> >>>> What do you think about that?
>>>> >>> >>>>
>>>> >>> >>>>
>>>> >>> >>>> On Wed, Oct 23, 2013 at 1:15 PM, Mike Tutkowski
>>>> >>> >>>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>
>>>> >>> >>>>> OK, whatever way you prefer then, Marcus (createVdb first or
>>>> >>> >>>>> second).
>>>> >>> >>>>>
>>>> >>> >>>>> If I leave createVdb first and return 0, it does seem to work.
>>>> >>> >>>>>
>>>> >>> >>>>>
>>>> >>> >>>>> On Wed, Oct 23, 2013 at 11:13 AM, Marcus Sorensen
>>>> >>> >>>>> <shadow...@gmail.com>
>>>> >>> >>>>> wrote:
>>>> >>> >>>>>>
>>>> >>> >>>>>> I think we could flip-flop these two lines if necessary:
>>>> >>> >>>>>>
>>>> >>> >>>>>>             createVbd(conn, vmSpec, vmName, vm);
>>>> >>> >>>>>>
>>>> >>> >>>>>>
>>>> _storagePoolMgr.connectPhysicalDisksViaVmSpec(vmSpec);
>>>> >>> >>>>>>
>>>> >>> >>>>>> I haven't actually tried it though. But in general I don't
>>>> see the
>>>> >>> >>>>>> Libvirt DiskDef using size at all, which is what createVbd
>>>> does
>>>> >>> >>>>>> (creates XML definitions for disks to attach to the VM
>>>> >>> >>>>>> definition). It
>>>> >>> >>>>>> just takes the device at it's native advertised size when it
>>>> >>> >>>>>> actually
>>>> >>> >>>>>> goes to use it.
>>>> >>> >>>>>>
>>>> >>> >>>>>> On Wed, Oct 23, 2013 at 10:52 AM, Mike Tutkowski
>>>> >>> >>>>>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> > Little problem that I wanted to get your take on, Marcus.
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > When a VM is being started, we call createVdb before
>>>> calling
>>>> >>> >>>>>> > connectPhysicalDisksViaVmSpec.
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > The problem is that createVdb calls getPhysicalDisk and my
>>>> >>> >>>>>> > volume
>>>> >>> >>>>>> > has not
>>>> >>> >>>>>> > yet been connected because connectPhysicalDisksViaVmSpec
>>>> has not
>>>> >>> >>>>>> > yet
>>>> >>> >>>>>> > been
>>>> >>> >>>>>> > called.
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > When I try to read up the size of the disk to populate a
>>>> >>> >>>>>> > PhysicalDisk, I get
>>>> >>> >>>>>> > an error, of course, because the path does not yet exist.
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > I could populate a 0 for the size of the physical disk and
>>>> then
>>>> >>> >>>>>> > the
>>>> >>> >>>>>> > next
>>>> >>> >>>>>> > time getPhysicalDisk is called, it should be filled in
>>>> with a
>>>> >>> >>>>>> > proper
>>>> >>> >>>>>> > size.
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > Do you see a problem with that approach?
>>>> >>> >>>>>> >
>>>> >>> >>>>>> >
>>>> >>> >>>>>> > On Tue, Oct 22, 2013 at 6:40 PM, Marcus Sorensen
>>>> >>> >>>>>> > <shadow...@gmail.com>
>>>> >>> >>>>>> > wrote:
>>>> >>> >>>>>> >>
>>>> >>> >>>>>> >> That's right. All should be well.
>>>> >>> >>>>>> >>
>>>> >>> >>>>>> >> On Oct 22, 2013 6:03 PM, "Mike Tutkowski"
>>>> >>> >>>>>> >> <mike.tutkow...@solidfire.com>
>>>> >>> >>>>>> >> wrote:
>>>> >>> >>>>>> >>>
>>>> >>> >>>>>> >>> Looks like we disconnect physical disks when the VM is
>>>> >>> >>>>>> >>> stopped.
>>>> >>> >>>>>> >>>
>>>> >>> >>>>>> >>> I didn't see that before.
>>>> >>> >>>>>> >>>
>>>> >>> >>>>>> >>> I suppose that means the disks are physically
>>>> disconnected
>>>> >>> >>>>>> >>> when
>>>> >>> >>>>>> >>> the VM is
>>>> >>> >>>>>> >>> stopped, but the CloudStack DB still has the VM
>>>> associated
>>>> >>> >>>>>> >>> with
>>>> >>> >>>>>> >>> the disks
>>>> >>> >>>>>> >>> for the next time the VM may be started up (unless
>>>> someone
>>>> >>> >>>>>> >>> does a
>>>> >>> >>>>>> >>> disconnect
>>>> >>> >>>>>> >>> while the VM is in the Stopped State).
>>>> >>> >>>>>> >>>
>>>> >>> >>>>>> >>>
>>>> >>> >>>>>> >>> On Tue, Oct 22, 2013 at 4:19 PM, Mike Tutkowski
>>>> >>> >>>>>> >>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> Hey Marcus,
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> Quick question for you related to attaching/detaching
>>>> volumes
>>>> >>> >>>>>> >>>> when the
>>>> >>> >>>>>> >>>> VM is in the Stopped State.
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> If I detach a volume from a VM that is in the Stopped
>>>> State,
>>>> >>> >>>>>> >>>> the
>>>> >>> >>>>>> >>>> DB
>>>> >>> >>>>>> >>>> seems to get updated, but I don't see a command going
>>>> to the
>>>> >>> >>>>>> >>>> KVM
>>>> >>> >>>>>> >>>> hypervisor
>>>> >>> >>>>>> >>>> that leads to the removal of the iSCSI target.
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> It seems the iSCSI target is only removed the next time
>>>> the
>>>> >>> >>>>>> >>>> VM is
>>>> >>> >>>>>> >>>> started.
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> Do you know if this is true?
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> If it is, I'm concerned that the volume could be
>>>> attached to
>>>> >>> >>>>>> >>>> another VM
>>>> >>> >>>>>> >>>> before the Stopped VM is re-started and when the
>>>> Stopped VM
>>>> >>> >>>>>> >>>> gets
>>>> >>> >>>>>> >>>> restarted
>>>> >>> >>>>>> >>>> that it would disconnect the iSCSI volume from
>>>> underneath the
>>>> >>> >>>>>> >>>> VM
>>>> >>> >>>>>> >>>> that now
>>>> >>> >>>>>> >>>> has the volume attached.
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> I still want to perform some tests on this, but am first
>>>> >>> >>>>>> >>>> trying
>>>> >>> >>>>>> >>>> to get a
>>>> >>> >>>>>> >>>> VM to start after I've attached a volume to it when it
>>>> was in
>>>> >>> >>>>>> >>>> the
>>>> >>> >>>>>> >>>> Stopped
>>>> >>> >>>>>> >>>> State.
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> Thanks,
>>>> >>> >>>>>> >>>> Mike
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>>
>>>> >>> >>>>>> >>>> On Mon, Oct 21, 2013 at 10:57 PM, Mike Tutkowski
>>>> >>> >>>>>> >>>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> Thanks for that info, Marcus.
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> By the way, I wanted to see if I could attach my
>>>> volume to a
>>>> >>> >>>>>> >>>>> VM
>>>> >>> >>>>>> >>>>> in the
>>>> >>> >>>>>> >>>>> Stopped State.
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> The attach logic didn't trigger any exceptions;
>>>> however,
>>>> >>> >>>>>> >>>>> when I
>>>> >>> >>>>>> >>>>> started
>>>> >>> >>>>>> >>>>> the VM, I received an Insufficient Capacity exception.
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> If I detach the volume and then start the VM, the VM
>>>> starts
>>>> >>> >>>>>> >>>>> just
>>>> >>> >>>>>> >>>>> fine.
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> I noticed a problem here (in StoragePoolHostDaoImpl):
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>     @Override
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>     public StoragePoolHostVO findByPoolHost(long
>>>> poolId,
>>>> >>> >>>>>> >>>>> long
>>>> >>> >>>>>> >>>>> hostId) {
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>         SearchCriteria<StoragePoolHostVO> sc =
>>>> >>> >>>>>> >>>>> PoolHostSearch.create();
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>         sc.setParameters("pool_id", poolId);
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>         sc.setParameters("host_id", hostId);
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>         return findOneIncludingRemovedBy(sc);
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>     }
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> The findOneIncludingRemovedBy method returns null (the
>>>> >>> >>>>>> >>>>> poolId is
>>>> >>> >>>>>> >>>>> my
>>>> >>> >>>>>> >>>>> storage pool's ID and the hostId is the expected host
>>>> ID).
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> I'm not sure what this method is trying to do.
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> I looked in the storage_pool_host_ref table (is that
>>>> the
>>>> >>> >>>>>> >>>>> correct
>>>> >>> >>>>>> >>>>> table?) and it only has one row, which maps the local
>>>> >>> >>>>>> >>>>> storage
>>>> >>> >>>>>> >>>>> pool of the
>>>> >>> >>>>>> >>>>> KVM host to the KVM host (which explains why no match
>>>> is
>>>> >>> >>>>>> >>>>> found
>>>> >>> >>>>>> >>>>> for my
>>>> >>> >>>>>> >>>>> situation).
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> Do you understand what this logic is trying to do?
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> Thanks!
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>> On Mon, Oct 21, 2013 at 8:08 PM, Marcus Sorensen
>>>> >>> >>>>>> >>>>> <shadow...@gmail.com>
>>>> >>> >>>>>> >>>>> wrote:
>>>> >>> >>>>>> >>>>>>
>>>> >>> >>>>>> >>>>>> Do you have the capability to clone the root disk?
>>>> Normally
>>>> >>> >>>>>> >>>>>> the
>>>> >>> >>>>>> >>>>>> template is installed to primary, and then cloned for
>>>> each
>>>> >>> >>>>>> >>>>>> root
>>>> >>> >>>>>> >>>>>> disk.
>>>> >>> >>>>>> >>>>>> In some cases (such as CLVM), this isn't efficient
>>>> and so
>>>> >>> >>>>>> >>>>>> the
>>>> >>> >>>>>> >>>>>> template
>>>> >>> >>>>>> >>>>>> is copied fresh to populate each root disk.
>>>> >>> >>>>>> >>>>>>
>>>> >>> >>>>>> >>>>>> I'm actually not 100% sure how this works in the new
>>>> code.
>>>> >>> >>>>>> >>>>>> It
>>>> >>> >>>>>> >>>>>> used to
>>>> >>> >>>>>> >>>>>> be handled by copyPhysicalDisk in the storage adaptor,
>>>> >>> >>>>>> >>>>>> called
>>>> >>> >>>>>> >>>>>> by
>>>> >>> >>>>>> >>>>>> copyTemplateToPrimaryStorage, which runs on the
>>>> agent. It
>>>> >>> >>>>>> >>>>>> would
>>>> >>> >>>>>> >>>>>> pass
>>>> >>> >>>>>> >>>>>> template/secondary storage info, and the destination
>>>> >>> >>>>>> >>>>>> volume/primary
>>>> >>> >>>>>> >>>>>> storage info, and copyPhysicalDisk would do the work
>>>> of
>>>> >>> >>>>>> >>>>>> installing the
>>>> >>> >>>>>> >>>>>> image to the destination.  Then subsequent root disks
>>>> would
>>>> >>> >>>>>> >>>>>> be
>>>> >>> >>>>>> >>>>>> cloned
>>>> >>> >>>>>> >>>>>> in CreateCommand by calling createDiskFromTemplate.
>>>> >>> >>>>>> >>>>>>
>>>> >>> >>>>>> >>>>>> In master it looks like this was moved to
>>>> >>> >>>>>> >>>>>> KVMStorageProcessor
>>>> >>> >>>>>> >>>>>> 'cloneVolumeFromBaseTemplate', although I think this
>>>> just
>>>> >>> >>>>>> >>>>>> takes
>>>> >>> >>>>>> >>>>>> over
>>>> >>> >>>>>> >>>>>> as default, and there's something in your storage
>>>> driver
>>>> >>> >>>>>> >>>>>> that
>>>> >>> >>>>>> >>>>>> should
>>>> >>> >>>>>> >>>>>> be capable of cloning templates on the mgmt server
>>>> side.
>>>> >>> >>>>>> >>>>>> I'm
>>>> >>> >>>>>> >>>>>> less sure
>>>> >>> >>>>>> >>>>>> about how the template gets to primary storage in the
>>>> first
>>>> >>> >>>>>> >>>>>> place, I
>>>> >>> >>>>>> >>>>>> assume copyTemplateToPrimaryStorage in
>>>> KVMStorageProcessor
>>>> >>> >>>>>> >>>>>> calling
>>>> >>> >>>>>> >>>>>> copyPhysicalDisk in your adaptor. It's a bit tough
>>>> for me
>>>> >>> >>>>>> >>>>>> to
>>>> >>> >>>>>> >>>>>> tell
>>>> >>> >>>>>> >>>>>> since our earlier storage adaptor did everything on
>>>> the
>>>> >>> >>>>>> >>>>>> host it
>>>> >>> >>>>>> >>>>>> mostly
>>>> >>> >>>>>> >>>>>> just worked with the default stuff.
>>>> >>> >>>>>> >>>>>>
>>>> >>> >>>>>> >>>>>> On Mon, Oct 21, 2013 at 4:49 PM, Mike Tutkowski
>>>> >>> >>>>>> >>>>>> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> >>>>>> > Hey Marcus,
>>>> >>> >>>>>> >>>>>> >
>>>> >>> >>>>>> >>>>>> > So...now that this works well for data disks, I was
>>>> >>> >>>>>> >>>>>> > wondering
>>>> >>> >>>>>> >>>>>> > what
>>>> >>> >>>>>> >>>>>> > might be
>>>> >>> >>>>>> >>>>>> > involved in getting this process to work for root
>>>> disks.
>>>> >>> >>>>>> >>>>>> >
>>>> >>> >>>>>> >>>>>> > Can you point me in the right direction as far as
>>>> what
>>>> >>> >>>>>> >>>>>> > gets
>>>> >>> >>>>>> >>>>>> > invoked
>>>> >>> >>>>>> >>>>>> > when a
>>>> >>> >>>>>> >>>>>> > VM is being created on KVM (so that its root disk
>>>> can be
>>>> >>> >>>>>> >>>>>> > created and
>>>> >>> >>>>>> >>>>>> > the
>>>> >>> >>>>>> >>>>>> > necessary template laid down or ISO installed)?
>>>> >>> >>>>>> >>>>>> >
>>>> >>> >>>>>> >>>>>> > Thanks!
>>>> >>> >>>>>> >>>>>> >
>>>> >>> >>>>>> >>>>>> >
>>>> >>> >>>>>> >>>>>> > On Mon, Oct 21, 2013 at 1:14 PM, Mike Tutkowski
>>>> >>> >>>>>> >>>>>> > <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> Hey Marcus,
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> Just wanted to let you know the branch of mine
>>>> that has
>>>> >>> >>>>>> >>>>>> >> your
>>>> >>> >>>>>> >>>>>> >> code
>>>> >>> >>>>>> >>>>>> >> and mine
>>>> >>> >>>>>> >>>>>> >> appears to work well with regards to attaching a
>>>> data
>>>> >>> >>>>>> >>>>>> >> disk
>>>> >>> >>>>>> >>>>>> >> to a
>>>> >>> >>>>>> >>>>>> >> running VM:
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> fdisk -l from hypervisor:
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> http://i.imgur.com/NkP5fo0.png
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> fdisk -l from within VM:
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> http://i.imgur.com/8YwiiC7.png
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> I plan to do more testing on this over the coming
>>>> days.
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> If all goes well, perhaps we can check this code
>>>> in by
>>>> >>> >>>>>> >>>>>> >> the
>>>> >>> >>>>>> >>>>>> >> end of
>>>> >>> >>>>>> >>>>>> >> the
>>>> >>> >>>>>> >>>>>> >> week?
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> Talk to you later,
>>>> >>> >>>>>> >>>>>> >> Mike
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >>
>>>> >>> >>>>>> >>>>>> >> On Sun, Oct 20, 2013 at 10:23 PM, Mike Tutkowski
>>>> >>> >>>>>> >>>>>> >> <mike.tutkow...@solidfire.com> wrote:
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>> Don't ask me, but it works now (I've been having
>>>> this
>>>> >>> >>>>>> >>>>>> >>> trouble
>>>> >>> >>>>>> >>>>>> >>> quite a
>>>> >>> >>>>>> >>>>>> >>> while today).
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>> I guess the trick is to send you an e-mail. :)
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>> On Sun, Oct 20, 2013 at 10:05 PM, Marcus Sorensen
>>>> >>> >>>>>> >>>>>> >>> <shadow...@gmail.com>
>>>> >>> >>>>>> >>>>>> >>> wrote:
>>>> >>> >>>>>> >>>>>> >>>>
>>>> >>> >>>>>> >>>>>> >>>> Did you create a service offering that uses local
>>>> >>> >>>>>> >>>>>> >>>> storage,
>>>> >>> >>>>>> >>>>>> >>>> or add
>>>> >>> >>>>>> >>>>>> >>>> a
>>>> >>> >>>>>> >>>>>> >>>> shared primary storage? By default there is no
>>>> storage
>>>> >>> >>>>>> >>>>>> >>>> that
>>>> >>> >>>>>> >>>>>> >>>> matches the
>>>> >>> >>>>>> >>>>>> >>>> built in offerings.
>>>> >>> >>>>>> >>>>>> >>>>
>>>> >>> >>>>>> >>>>>> >>>> On Oct 20, 2013 9:39 PM, "Mike Tutkowski"
>>>> >>> >>>>>> >>>>>> >>>> <mike.tutkow...@solidfire.com>
>>>> >>> >>>>>> >>>>>> >>>> wrote:
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> Hey Marcus,
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> So, I went back to the branch of mine that has
>>>> your
>>>> >>> >>>>>> >>>>>> >>>>> code
>>>> >>> >>>>>> >>>>>> >>>>> and
>>>> >>> >>>>>> >>>>>> >>>>> mine and
>>>> >>> >>>>>> >>>>>> >>>>> was able to create a new CloudStack install from
>>>> >>> >>>>>> >>>>>> >>>>> scratch
>>>> >>> >>>>>> >>>>>> >>>>> with it
>>>> >>> >>>>>> >>>>>> >>>>> (once
>>>> >>> >>>>>> >>>>>> >>>>> again, after manually deleting what was in
>>>> >>> >>>>>> >>>>>> >>>>> /var/lib/libvirt/images to the
>>>> >>> >>>>>> >>>>>> >>>>> get system VMs to start).
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> Anyways, my system VMs are running now and I
>>>> tried to
>>>> >>> >>>>>> >>>>>> >>>>> kick off a
>>>> >>> >>>>>> >>>>>> >>>>> VM
>>>> >>> >>>>>> >>>>>> >>>>> using the CentOS 6.3 image you provided me a
>>>> while
>>>> >>> >>>>>> >>>>>> >>>>> back.
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> The virtual router has a Status of Running;
>>>> however,
>>>> >>> >>>>>> >>>>>> >>>>> my
>>>> >>> >>>>>> >>>>>> >>>>> VM fails
>>>> >>> >>>>>> >>>>>> >>>>> to
>>>> >>> >>>>>> >>>>>> >>>>> start (with the generic message of Insufficient
>>>> >>> >>>>>> >>>>>> >>>>> Capacity).
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> I've not seen this exception before (related to
>>>> the
>>>> >>> >>>>>> >>>>>> >>>>> VR).
>>>> >>> >>>>>> >>>>>> >>>>> Do you
>>>> >>> >>>>>> >>>>>> >>>>> have
>>>> >>> >>>>>> >>>>>> >>>>> any insight into this?:
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.exception.ResourceUnavailableException:
>>>> >>> >>>>>> >>>>>> >>>>> Resource
>>>> >>> >>>>>> >>>>>> >>>>> [Pod:1] is
>>>> >>> >>>>>> >>>>>> >>>>> unreachable: Unable to apply userdata and
>>>> password
>>>> >>> >>>>>> >>>>>> >>>>> entry
>>>> >>> >>>>>> >>>>>> >>>>> on
>>>> >>> >>>>>> >>>>>> >>>>> router
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.network.router.VirtualNetworkApplianceManagerImpl.applyRules(VirtualNetworkApplianceManagerImpl.java:3793)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.network.router.VirtualNetworkApplianceManagerImpl.applyUserData(VirtualNetworkApplianceManagerImpl.java:3017)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.network.element.VirtualRouterElement.addPasswordAndUserdata(VirtualRouterElement.java:933)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.engine.orchestration.NetworkOrchestrator.prepareElement(NetworkOrchestrator.java:1172)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.engine.orchestration.NetworkOrchestrator.prepareNic(NetworkOrchestrator.java:1288)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.engine.orchestration.NetworkOrchestrator.prepare(NetworkOrchestrator.java:1224)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:826)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:508)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.engine.cloud.entity.api.VMEntityManagerImpl.deployVirtualMachine(VMEntityManagerImpl.java:227)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntityImpl.deploy(VirtualMachineEntityImpl.java:209)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:3338)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:2919)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.vm.UserVmManagerImpl.startVirtualMachine(UserVmManagerImpl.java:2905)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.api.command.user.vm.DeployVMCmd.execute(DeployVMCmd.java:421)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:161)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.api.ApiAsyncJobDispatcher.runJobInContext(ApiAsyncJobDispatcher.java:109)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.api.ApiAsyncJobDispatcher$1.run(ApiAsyncJobDispatcher.java:66)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:63)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$1.runInContext(AsyncJobManagerImpl.java:532)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> >>> >>>>>> >>>>>> >>>>> at
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> >>> >>>>>> >>>>>> >>>>> at java.lang.Thread.run(Thread.java:724)
>>>> >>> >>>>>> >>>>>> >>>>>
>>>> >>> >>>>>> >>>>>> >>>>> Thanks!
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>>
>>>> >>> >>>>>> >>>>>> >>> --
>>>> >>> >>>>>> >>>>>> >>> 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™
>>>> >>> >>>>>
>>>> >>> >>>>>
>>>> >>> >>>>>
>>>> >>> >>>>>
>>>> >>> >>>>> --
>>>> >>> >>>>> 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>
*™*

Reply via email to