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> *™*