@Override public StorageOperationResponse<TakeSnapshotResponse> takeSnapshot(TakeSnapshotRequest request) { logger.log( IJavaEeLog.SEVERITY_DEBUG, this.getClass().getName(), "takeSnapshot: " + request, null); ArrayList<StorageSnapshotVolume> storageVolumeSnapshotList = new ArrayList<StorageSnapshotVolume>(); StorageOperationResponse<TakeSnapshotResponse> response = null; PrepareTakeSnapshotRequest prepareRequest = (PrepareTakeSnapshotRequest) request.prepareTakeSnapshotResult; OpenstackBlockSnapshotVolumesContext context = new OpenstackBlockSnapshotVolumesContext(); context.snapshotIds = new ArrayList<String>(); for (StorageVolume volume : prepareRequest.storageVolumesToBeSnapshot) { VolumeSnapshot snapshot = null; try { StorageSnapshotVolume storageVolumeSnapshot = OpenstackAdapterUtil.toStorageSnapshot(snapshot, volume.storageSystemId); storageVolumeSnapshotList.add(storageVolumeSnapshot); context.snapshotIds.add(storageVolumeSnapshot.storageVolumeId); } catch (Exception e) { logger.traceThrowable( IJavaEeLog.SEVERITY_DEBUG, this.getClass().getName(), "takeSnapshot:" + e.getMessage(), null, e); cancelSnapshots(storageVolumeSnapshotList); return StorageAdapterImplHelper.createFailedResponse( e.getMessage(), TakeSnapshotResponse.class); } context.snapshots = storageVolumeSnapshotList; } TakeSnapshotResponse payload = new TakeSnapshotResponse(); context.volumes = prepareRequest.storageVolumesToBeSnapshot; payload.takeSnapshotResult = context; response = new StorageOperationResponse<TakeSnapshotResponse>(payload); response.setContext(context); response.setPercentCompleted(100); response.setStatus(StorageOperationStatus.COMPLETED); return response; }