Hi all,
     Min and I worked on object_store branch during the last one and half 
month. We made a lot of refactor on the storage code, mostly related to 
secondary storage, but also on the general storage framework. The following 
goals are made:

1.       An unified storage framework. Both secondary storages(nfs/s3/swift 
etc) and primary storages will share the same plugin model, the same interface. 
Add any other new storages into cloudstack will much easier and straightforward.

2.       The storage interface  between mgt server and resource is unified, 
currently there are only 5 commands send out by mgt server: 
copycommand/createobjectcommand/deletecommand/attachcommand/dettachcommand, and 
each storage vendor can decode/encode all the entities(volume/snapshot/storage 
pool/ template etc) by its own.

3.       NFS secondary storage is not explicitly depended on by other 
components. For example, when registering template into S3, template will be 
write into S3 directly, instead of storing into nfs secondary storage, then 
push to S3. If s3 is used as secondary storage, then nfs storage will be used 
as cache storage, but from other components point of view, cache storage is 
invisible. So, it's possible to make nfs storage as optional if s3 is used for 
certain hypervisors.
The detailed FS is at 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Storage+Backup+Object+Store+Plugin+Framework
The test we did:

1.       We modified marvin to use new storage api

2.       Test_volume and test_vm_life_cycle, test_template under smoke test 
folder are executed against xenserver/kvm/vmware and devcloud, some of them are 
failed, it's partly due to bugs introduced by our code, partly master branch 
itself has issue(e.g. resizevolume doesn't work). We want to fix these issues 
after merging into master.

The basic follow does work: create user vm, attach/detach volume, register 
template, create template from volume/snapshot, take snapshot, create volume 
from snapshot.
  It's a huge change, around 60k LOC patch, to review the code, you can try: 
git diff master..object_store, will show all the diff.
  Comments/feedback are welcome. Thanks.


Reply via email to