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

Reply via email to