@Override
public void revertVolumeFromSnapshot(VolumeSnapshotInventory sinv, VolumeInventory vol, HostInventory host, ReturnValueCompletion<RevertVolumeFromSnapshotOnPrimaryStorageReply> completion) {
RevertVolumeFromSnapshotCmd cmd = new RevertVolumeFromSnapshotCmd();
cmd.setSnapshotInstallPath(sinv.getPrimaryStorageInstallPath());
cmd.setUuid(sinv.getPrimaryStorageUuid());
KVMHostAsyncHttpCallMsg msg = new KVMHostAsyncHttpCallMsg();
msg.setCommand(cmd);
msg.setPath(REVERT_VOLUME_FROM_SNAPSHOT_PATH);
msg.setHostUuid(host.getUuid());
bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, host.getUuid());
bus.send(msg, new CloudBusCallBack(completion) {
@Override
public void run(MessageReply reply) {
if (!reply.isSuccess()) {
completion.fail(reply.getError());
return;
}
RevertVolumeFromSnapshotResponse rsp = ((KVMHostAsyncHttpCallReply) reply).toResponse(RevertVolumeFromSnapshotResponse.class);
if (!rsp.isSuccess()) {
completion.fail(operr("failed to revert volume[uuid:%s] to snapshot[uuid:%s] on kvm host[uuid:%s, ip:%s], %s",
vol.getUuid(), sinv.getUuid(), host.getUuid(), host.getManagementIp(), rsp.getError()));
return;
}
RevertVolumeFromSnapshotOnPrimaryStorageReply r = new RevertVolumeFromSnapshotOnPrimaryStorageReply();
r.setNewVolumeInstallPath(rsp.getNewVolumeInstallPath());
r.setSize(rsp.getSize());
completion.success(r);
}
});
}