cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Burwell" <jburw...@basho.com>
Subject Re: Review Request 14522: [CLOUDSTACK-4771] Support Revert VM Disk from Snapshot
Date Tue, 15 Oct 2013 14:41:36 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/14522/#review27021
-----------------------------------------------------------



api/src/org/apache/cloudstack/api/response/SnapshotResponse.java
<https://reviews.apache.org/r/14522/#comment52591>

    CanRevert is an awkward/non-standard property name.  Prefer an adverb such as revertable
(e.g. isRevertable/setRevertable with an attribute named revertableFlag).



engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreDriver.java
<https://reviews.apache.org/r/14522/#comment52592>

    I don't know that a flag is necessary to represent this capability since we already have
a revertSnapshot method.  Personally, I dislike the complexity of exposing methods on an interface
that are guarded by another.  I would prefer to see revertSnapshot enhanced to throw an exception
when a snapshot can't be reverted.  In addition to be a simpler approach, it covers both the
scenario when a device does not support reverting snapshots and, as well as, the device or
the snapshot not being a revertable state.



engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/SnapshotInfo.java
<https://reviews.apache.org/r/14522/#comment52593>

    Prefer an adverb property name such as "revertable".



engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StrategyPriority.java
<https://reviews.apache.org/r/14522/#comment52595>

    How does the result of the canHandle method drive the comparison of two Snapshots?  Why
not just compare the ops to each other other?



engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StrategyPriority.java
<https://reviews.apache.org/r/14522/#comment52594>

    Very poor performance as it circumvents the primitive pool.  Change to Integer.valueOf(i1).compareTo(Integer.valueOf(i2)).



engine/storage/integration-test/test/org/apache/cloudstack/storage/test/SnapshotTest.java
<https://reviews.apache.org/r/14522/#comment52596>

    *This comment may be more editorial at this point because of the nature of the existing
code*
    I would prefer to see an exception thrown here rather than the complexity of the canHandle.
 I am also concerned that the canHandle method only checks that the underlying device can
take a snapshot without accounting for whether or not the volume is in a state to take a consistent
snapshot.  I am also concerned that we don't have a semantic for handling errors that might
result from the actual snapshot operation.  



engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
<https://reviews.apache.org/r/14522/#comment52597>

    What is the purpose of sorting the strategies?



engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java
<https://reviews.apache.org/r/14522/#comment52598>

    Coding convention: Add curly braces



server/src/com/cloud/api/ApiResponseHelper.java
<https://reviews.apache.org/r/14522/#comment52599>

    If the snapshot was instance of SnapshotInfo and no SnapshotInfo was found, an exception
should thrown.
    
    Provided my assumption is correct, I suggest refactoring to a structure such as the following:
    
    final SnapshotInfo secondaryInfo = (snapshot instanceof SnapshotInfo) ? (SnapshotInfo)
snapshot : snapshotfactory.getSnapshot(snapshot.getId(), DataStoreRole.Image);
    
    if (secondaryInfo == null) {
       throw new CloudRuntimException(/* Appropriate error message */ );
    }
    
    snapshotResponse.setCanRevert(secondaryInfo.canRevert);


- John Burwell


On Oct. 14, 2013, 6:50 p.m., Chris Suich wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/14522/
> -----------------------------------------------------------
> 
> (Updated Oct. 14, 2013, 6:50 p.m.)
> 
> 
> Review request for cloudstack, Brian Federle, edison su, John Burwell, and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> After the last batch of work to the revertSnapshot API, SnapshotServiceImpl was not tied
into the workflow to be used by storage providers. I have added the logic in a similar fashion
to takeSnapshot(), backupSnapshot() and deleteSnapshot().
> 
> I have also added a 'Revert to Snapshot' action to the volume snapshots list in the UI.
> 
> 
> Diffs
> -----
> 
>   api/src/org/apache/cloudstack/api/ApiConstants.java f85784b 
>   api/src/org/apache/cloudstack/api/response/SnapshotResponse.java e9cb109 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreDriver.java
b124d83 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/SnapshotInfo.java
8d6b760 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/SnapshotStrategy.java
e4cecb6 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StrategyPriority.java
8bd04f5 
>   engine/api/test/org/apache/cloudstack/engine/subsystem/api/storage/StrategyPriorityTest.java
329b99f 
>   engine/storage/integration-test/test/org/apache/cloudstack/storage/test/FakePrimaryDataStoreDriver.java
810afd1 
>   engine/storage/integration-test/test/org/apache/cloudstack/storage/test/SnapshotTest.java
81f77d6 
>   engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
3f35e1d 
>   engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/XenserverSnapshotStrategy.java
6a874d6 
>   plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java
3eaeb1f 
>   plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java
ece7b26 
>   plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
8046b6c 
>   server/src/com/cloud/api/ApiResponseHelper.java f4ca112 
>   server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java dade983 
>   ui/scripts/storage.js b16f4d4 
> 
> Diff: https://reviews.apache.org/r/14522/diff/
> 
> 
> Testing
> -------
> 
> I have tested all of this locally with a custom storage provider.
> 
> Unfortunately, I'm still in the middle of figuring out how to properly unit test this
type of code. If anyone has any recommendations, please let me know.
> 
> 
> Thanks,
> 
> Chris Suich
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message