Yes, it just means move one entity(volume/snapshot/template etc) from one place to another.
> -----Original Message----- > From: John Kinsella [mailto:j...@stratosec.co] > Sent: Friday, December 28, 2012 11:40 AM > To: cloudstack-dev@incubator.apache.org > Subject: Re: new storage framework update > > Great writeup! On the wiki page, are "motion" and "migration" > interchangeable? > > John > > On Dec 27, 2012, at 6:41 PM, Edison Su <edison...@citrix.com> wrote: > > > Hi All, > > Before heading into holiday, I'd like to update the current status of > > the > new storage framework since last collab12. > > 1. Class diagram of primary storage is evolved: > https://cwiki.apache.org/confluence/download/attachments/30741569/stor > age.jpg?version=1&modificationDate=1356640617613 > > Highlight the current design: > > a. One storage provider can cover multiple storage protocols for > multiple hypervisors. The default storage provider can almost cover all the > current primary storage protocols. In most of cases, you don't need to write a > new storage provider, what you need to do is to write a new storage > configurator. Write a new storage provider needs to write a lot of code, > which we should avoid it as much as possible. > > b. A new type hierarchy, primaryDataStoreConfigurator, is added. The > configurator is a factory for primaryDataStore, which assemble > StorageProtocolTransformer, PrimaryDataStoreLifeCycle and > PrimaryDataStoreDriver for PrimaryDataStore object, based on the > hypervisor type and the storage protocol. For example, for nfs primary > storage on xenserver, there is a class called XenNfsConfigurator, which put > DefaultXenPrimaryDataStoreLifeCycle, NfsProtocolTransformer and > DefaultPrimaryDataStoreDriverImpl into DefaultPrimaryDataStore. One > provider can only have one configurator for a pair of hypervisor type and > storage protocol. For example, if you want to add a new nfs protocol > configurator for xenserver hypervisor, you need to write a new storage > provider. > > c. A new interface, StorageProtocolTransformer, is added. The main > purpose of this interface is to handle the difference between different > storage protocols. It has four methods: > > getInputParamNames: return a list of name of parameters for a > particular protocol. E.g. NFS protocol has ["server", "path"], ISCSI has > ["iqn", > "lun"] etc. UI shouldn't hardcode these parameters any more. > > normalizeUserInput: given a user input from UI/API, need to > > validate > the input, and break it apart, then store them into database > > getDataStoreTO/ getVolumeTO: each protocol can have its own > volumeTO and primaryStorageTO. TO is the object will be passed down to > resource, if your storage has extra information you want to pass to resource, > these two methods are the place you can override. > > d. All the time-consuming API calls related to storage is async. > > > > 2. Minimal functionalities are implemented: > > a. Can register a http template, without SSVM > > b. Can register a NFS primary storage for xenserver > > c. Can download a template into primary storage directly > > d. Can create a volume from a template > > > > 3. All about test: > > a. TestNG test framework is used, as it can provide parameter for > > each > test case. For integration test, we need to know ip address of hypervisor > host, the host uuid(if it's xenserver), the primary storage url, the template > url > etc. These configurations are better to be parameterized, so for each test > run, we don't need to modify test case itself, instead, we provide a test > configuration file for each test run. TestNG framework already has this > functionality, I just reuse it. > > b. Every pieces of code can be unit tested, which means: > > b.1 the xcp plugin can be unit tested. I wrote a small > > python code, > called mockxcpplugin.py, which can directly call xcp plugin. > > b.2 direct agent hypervisor resource can be tested. I wrote > > a mock > agent manger, which can load and initialize hypervisor resource, and also can > send command to resource. > > b.3 a storage integration test maven project is created, > > which can > test the whole storage subsystem, such as create volume from template, > which including both image and volume components. > > A new section, called "how to test", is added into > https://cwiki.apache.org/confluence/display/CLOUDSTACK/Storage+subsyst > em+2.0, please check it out. > > > > The code is on the javelin branch, the maven projects whose name > starting from cloud-engine-storage-* are the code related to storage > subsystem. Most of the primary storage code is in cloud-engine-storage- > volume project. > > Any feedback/comment is appreciated. > > > > Stratosec - Secure Infrastructure as a Service > o: 415.315.9385 > @johnlkinsella