diff --git a/api/src/com/cloud/storage/snapshot/SnapshotApiService.java b/api/src/com/cloud/storage/snapshot/SnapshotApiService.java index a86ef37b452..fb48f477454 100644 --- a/api/src/com/cloud/storage/snapshot/SnapshotApiService.java +++ b/api/src/com/cloud/storage/snapshot/SnapshotApiService.java @@ -106,7 +106,7 @@ public interface SnapshotApiService { */ Long getHostIdForSnapshotOperation(Volume vol); - boolean revertSnapshot(Long snapshotId); + Snapshot revertSnapshot(Long snapshotId); SnapshotPolicy updateSnapshotPolicy(UpdateSnapshotPolicyCmd updateSnapshotPolicyCmd); } diff --git a/api/src/org/apache/cloudstack/api/command/user/snapshot/RevertSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/snapshot/RevertSnapshotCmd.java index d2ccf6a4da0..b8fbb02ad22 100644 --- a/api/src/org/apache/cloudstack/api/command/user/snapshot/RevertSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/snapshot/RevertSnapshotCmd.java @@ -29,7 +29,6 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SnapshotResponse; -import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.context.CallContext; import org.apache.log4j.Logger; @@ -37,7 +36,7 @@ import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot; import com.cloud.user.Account; -@APICommand(name = "revertSnapshot", description = "revert a volume snapshot.", responseObject = SuccessResponse.class, entityType = {Snapshot.class}, +@APICommand(name = "revertSnapshot", description = "revert a volume snapshot.", responseObject = SnapshotResponse.class, entityType = {Snapshot.class}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) public class RevertSnapshotCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(RevertSnapshotCmd.class.getName()); @@ -99,9 +98,10 @@ public class RevertSnapshotCmd extends BaseAsyncCmd { @Override public void execute() { CallContext.current().setEventDetails("Snapshot Id: " + getId()); - boolean result = _snapshotService.revertSnapshot(getId()); - if (result) { - SuccessResponse response = new SuccessResponse(getCommandName()); + Snapshot snapshot = _snapshotService.revertSnapshot(getId()); + if (snapshot != null) { + SnapshotResponse response = _responseGenerator.createSnapshotResponse(snapshot); + response.setResponseName(getCommandName()); setResponseObject(response); } else { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to revert snapshot"); diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index d6fafb181b6..c622c552710 100644 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -246,7 +246,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, } @Override - public boolean revertSnapshot(Long snapshotId) { + public Snapshot revertSnapshot(Long snapshotId) { SnapshotVO snapshot = _snapshotDao.findById(snapshotId); if (snapshot == null) { throw new InvalidParameterValueException("No such snapshot"); @@ -277,7 +277,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, if (snapshotStrategy == null) { s_logger.error("Unable to find snaphot strategy to handle snapshot with id '" + snapshotId + "'"); - return false; + return null; } boolean result = snapshotStrategy.revertSnapshot(snapshotInfo); @@ -287,8 +287,9 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, new Long(volume.getSize() - snapshot.getSize())); volume.setSize(snapshot.getSize()); _volsDao.update(volume.getId(), volume); + return snapshotInfo; } - return result; + return null; } @Override