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