Here are some of the tests I ran on this code:

attach/detach/attach volume while VM is running: works
volume attached while VM is running, then reboot: works
volume attached while VM is running, then reset: works
volume detached while VM is stopped, then start: works
volume attached while VM is stopped, then start: works
deleted VM with attached volume: works (volume goes into the attachable
state after VM is expunged)


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

> By the way, in case you're looking at the diff and wondering why I took
> out a StopCommand check and call to execute in LibvirtComputingResource,
> there were two of them.
>
> -            } else if (cmd instanceof StopCommand) {
>
> -                return execute((StopCommand) cmd);
>
>
> On Thu, Oct 24, 2013 at 5:26 PM, Mike Tutkowski <
> mike.tutkow...@solidfire.com> wrote:
>
>> 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>
>> *™*
>>
>
>
>
> --
> *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