Ok, that makes sense. So this will be a part of the storage refactor? If
you're not already working on it I'll play with it and see if I can create
a working implementation.

I'm assuming we'd have in your example both a getStoragePool(String uuid)
that selects the old/default LibvirtStorageAdaptor and a
getStoragePool(String storagePoolType, String uuid), so as not to have to
redo any existing code?


On Mon, Dec 10, 2012 at 1:31 PM, Edison Su <edison...@citrix.com> wrote:

> KVMStoragePoolManager should manage the mapping between storage pool type
> and storageadaptor. ****
>
> **1.  **In KVMStoragePoolManager’s constructor, create a map between
> storage pool type and storageadaptor:****
>
> sample code:****
>
> map<String, storageadaptor> storageMapper = new HashMap<String,
> storageadaptor>();****
>
> storageMapper.add(“your-storage-type”, new your-storage-adaptor);****
>
> storageMapper.add(“libvirt-managed-storage”, new LibvirtStorageAdaptor);**
> **
>
> **2.  **For each api of KVMStoragePoolManager, should pass down a storage
> pool type, e.g:****
>
> public KVMStoragePool getStoragePool(String storagePoolType, String uuid) {
> ****
>
>        storageadaptor adaptor = storageMapper.get(storagepoolType);****
>
>        if (adaptor == null) {****
>
>               adaptor = storageMapper.get(“libvirt-managed-storage”);****
>
> }****
>
> return adaptor.getStoragePool(uuid);****
>
> }****
>
> ** **
>
> ** **
>
> ** **
>
> ** **
>
> *From:* Marcus Sorensen [mailto:shadow...@gmail.com]
> *Sent:* Monday, December 10, 2012 3:06 PM
> *To:* Edison Su
> *Cc:* cloudstack-dev@incubator.apache.org
> *Subject:* Re: pluggable storage implementation****
>
> ** **
>
> Yeah, but I'm not seeing an easy/pluggable way to implement a storage
> adaptor, where LibvirtComputingResource relies exclusively on
> KVMStoragePoolManager, which is implementing LibvirtStorageAdaptor. I don't
> see how to switch between storage adaptors in KVMStoragePoolManager.java
> based on what primary storage type I happen to be acting upon.****
>
> ** **
>
> On Mon, Dec 10, 2012 at 12:51 PM, Edison Su <edison...@citrix.com> wrote:*
> ***
>
>  ****
>
>  ****
>
> *From:* Marcus Sorensen [mailto:shadow...@gmail.com]
> *Sent:* Monday, December 10, 2012 2:06 PM
> *To:* Edison Su
> *Cc:* cloudstack-dev@incubator.apache.org
> *Subject:* pluggable storage implementation****
>
>  ****
>
> Just curious, hadn't thought about this before but it seems that at least
> on KVM (probably similar in Xen and VMware too?), there are two separate
> issues with storage in the existing code. First, adding a new storage type
> is a matter of adding in a new 'else if' or something in a bunch of
> different places, as well as tweaking behavior to match the storage type.
> Second, everything about the storage is tightly integrated with Libvirt,
> meaning that if your storage type is not supported by Libvirt it's much,
> much more difficult to implement.****
>
>  ****
>
> Are these both being addressed by the storage changes, for example can we
> write a storage plugin that creates pools/volumes that libvirt doesn't know
> about and still attach those to instances? Or would we need to patch
> libvirt to utilize our storage first?****
>
>  ****
>
> [Edison] That’s the storageadaptor used for:
> https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob;f=plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java;h=ef1e7c9302ab6ac8f197cf75bbf7235bba0235cf;hb=HEAD
> ****
>
> The LibvirtStorageAdaptor  is one of implementation of storageadaptor,
> which is totally based on libvirt, If you have a new storage, not supported
> by libvirt, then you can add a new implementation of storageadaptor.****
>
> ** **
>

Reply via email to