I'd say it's pretty confusing to have two calls with the same name but
differing upper/lower case.

On Wed, Sep 26, 2012 at 3:21 PM, Marcus Sorensen <shadow...@gmail.com> wrote:
> Yeah, that's what we want.  What generates a random one is the
> existing one we use, getStoragePoolByUri:
>
> uuid = UUID.randomUUID().toString();
>
>
>
> On Wed, Sep 26, 2012 at 3:19 PM, Edison Su <edison...@citrix.com> wrote:
>> After taking a look at the code carefully... What we really do is: don't 
>> generate a random uuid, but using
>> uuid = UUID.nameUUIDFromBytes(
>>                     new String(sourceHost + 
>> sourcePath).getBytes()).toString();
>> instead.
>>
>>> -----Original Message-----
>>> From: Edison Su [mailto:edison...@citrix.com]
>>> Sent: Wednesday, September 26, 2012 2:09 PM
>>> To: cloudstack-dev@incubator.apache.org
>>> Subject: RE: advice: trying to fix secondary/iso nfs storage on KVM
>>>
>>> Yes, you are right, getStoragePoolbyURI is the right one.
>>>
>>> > -----Original Message-----
>>> > From: Marcus Sorensen [mailto:shadow...@gmail.com]
>>> > Sent: Wednesday, September 26, 2012 2:03 PM
>>> > To: cloudstack-dev@incubator.apache.org
>>> > Subject: Re: advice: trying to fix secondary/iso nfs storage on KVM
>>> >
>>> > It looks like the aforementioned getStoragePoolbyURI takes care of
>>> > this, that is it takes the host/path, generates a UUID based on it,
>>> > and then searches existing storage pools for it. If none is found, it
>>> > creates a new one, otherwise it uses the existing pool.
>>> >
>>> > So would changing KVMStoragePoolManager.java to do
>>> getStoragePoolbyURI
>>> > instead of getStoragePoolByUri be enough to fix?
>>> >
>>> > On Wed, Sep 26, 2012 at 2:58 PM, Edison Su <edison...@citrix.com>
>>> wrote:
>>> > > The latest libvirt(bundled in rhel 6.3) has this limitation, you
>>> > can't create duplicate storage pool with the same host/path, thus
>>> > breaks some of the logic in the current code.
>>> > > To fix the issue, we need to list all the available storage pools
>>> on
>>> > kvm host, check one by one: if any one of storage pools has the same
>>> > attribute(for nfs, it's host and path, for dir storage, it's path) as
>>> > we are looking for, then return.
>>> > >
>>> > >> -----Original Message-----
>>> > >> From: Marcus Sorensen [mailto:shadow...@gmail.com]
>>> > >> Sent: Wednesday, September 26, 2012 1:32 PM
>>> > >> To: cloudstack-dev@incubator.apache.org
>>> > >> Subject: Re: advice: trying to fix secondary/iso nfs storage on
>>> KVM
>>> > >>
>>> > >> I also notice that LibvirtComputingResource calls
>>> > getStoragePoolByURI
>>> > >>
>>> > >> getStoragePoolByURI calls getStoragePoolByUri per
>>> > >> KVMStoragePoolManager.java
>>> > >>
>>> > >> in LibvirtStorageAdaptor there exists both getStoragePoolByUri and
>>> > >> getStoragePoolbyURI. The latter looks like it generates a UUID
>>> based
>>> > >> on the host/path of the secondary storage, and creates a storage
>>> > pool
>>> > >> based on it if needed.  So I'm wondering if we are just calling
>>> the
>>> > >> wrong one, although this is called many times in
>>> > >> LibvirtComputingResource so perhaps we intend both behaviors at
>>> > >> certain points.
>>> > >>
>>> > >> To recap:
>>> > >>
>>> > >> getStoragePoolByUri  will always try to create a new nfs pool with
>>> a
>>> > >> random UUID
>>> > >>
>>> > >> getStoragePoolbyURI attempts to generate a UUID from the
>>> > >> sourcehost/path and uses that (static UUID)
>>> > >>
>>> > >>
>>> > >>
>>> > >> On Wed, Sep 26, 2012 at 2:10 PM, Marcus Sorensen
>>> > <shadow...@gmail.com>
>>> > >> wrote:
>>> > >> > I noticed that I can no longer create multiple VMs from ISO.
>>> After
>>> > >> the
>>> > >> > first one, I get an error where the agent is trying to create a
>>> > >> > duplicate storage pool, throwing 'Storage source conflict with
>>> > pool'
>>> > >> >
>>> > >> > In looking into it, it seems that with ISOs we call
>>> > >> > getStoragePoolByURI with the path to the iso
>>> > >> >
>>> > >> > This generates a new random UUID and attempts to create a
>>> storage
>>> > >> pool
>>> > >> > with this UUID via createStoragePool
>>> > >> >
>>> > >> > createStoragePool first looks to see if the pool passed already
>>> > >> > exists, which it doesn't since we just generated the UUID out of
>>> > thin
>>> > >> > air. Then it attempts to create a new storage pool, and voila,
>>> we
>>> > get
>>> > >> > the storage source conflict because we're trying to create a new
>>> > >> > storage pool.
>>> > >> >
>>> > >> > So, I am left with a bunch of questions as to why it was done
>>> this
>>> > >> > way. Should I find a way to pull the secondary storage's real
>>> UUID,
>>> > >> > and use that in getStoragePoolByUri/createStoragePool, or should
>>> I
>>> > >> > continue using a random UUID, but fix createStoragePool to look
>>> > for
>>> > >> an
>>> > >> > existing storage source before trying to generate a new nfs
>>> > storage
>>> > >> > pool?

Reply via email to