Skip to content

Commit 1d2f330

Browse files
author
Mike Tutkowski
committed
Adding support for SolidFire snapshots
1 parent 659eaff commit 1d2f330

10 files changed

Lines changed: 405 additions & 60 deletions

File tree

engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreDriver.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,14 @@ public interface PrimaryDataStoreDriver extends DataStoreDriver {
3232

3333
public void disconnectVolumeFromHost(VolumeInfo volumeInfo, Host host, DataStore dataStore);
3434

35-
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool);
35+
// intended for managed storage (cloud.storage_pool.managed = true)
36+
// if not managed, return volume.getSize()
37+
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool storagePool);
38+
39+
// intended for managed storage (cloud.storage_pool.managed = true)
40+
// if managed storage, return the total number of bytes currently in use for the storage pool in question
41+
// if not managed storage, return 0
42+
public long getUsedBytes(StoragePool storagePool);
3643

3744
public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCmdResult> callback);
3845

engine/storage/integration-test/test/org/apache/cloudstack/storage/test/FakePrimaryDataStoreDriver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public ChapInfo getChapInfo(VolumeInfo volumeInfo) {
5454
@Override
5555
public void disconnectVolumeFromHost(VolumeInfo volumeInfo, Host host, DataStore dataStore) {}
5656

57+
@Override
58+
public long getUsedBytes(StoragePool storagePool) {
59+
return 0;
60+
}
61+
5762
@Override
5863
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
5964
return volume.getSize();

engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,10 +316,10 @@ protected Void copySnapshotAsyncCallback(AsyncCallbackDispatcher<SnapshotService
316316
}
317317

318318
try {
319-
CopyCmdAnswer answer = (CopyCmdAnswer)result.getAnswer();
320-
destSnapshot.processEvent(Event.OperationSuccessed, result.getAnswer());
319+
CopyCmdAnswer copyCmdAnswer = (CopyCmdAnswer)result.getAnswer();
320+
destSnapshot.processEvent(Event.OperationSuccessed, copyCmdAnswer);
321321
srcSnapshot.processEvent(Snapshot.Event.OperationSucceeded);
322-
snapResult = new SnapshotResult(_snapshotFactory.getSnapshot(destSnapshot.getId(), destSnapshot.getDataStore()), answer);
322+
snapResult = new SnapshotResult(_snapshotFactory.getSnapshot(destSnapshot.getId(), destSnapshot.getDataStore()), copyCmdAnswer);
323323
future.complete(snapResult);
324324
} catch (Exception e) {
325325
s_logger.debug("Failed to update snapshot state", e);

plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@ public boolean connectVolumeToHost(VolumeInfo volumeInfo, Host host, DataStore d
157157
public void disconnectVolumeFromHost(VolumeInfo volumeInfo, Host host, DataStore dataStore) {
158158
}
159159

160+
@Override
161+
public long getUsedBytes(StoragePool storagePool) {
162+
return 0;
163+
}
164+
160165
@Override
161166
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
162167
return volume.getSize();

plugins/storage/volume/nexenta/src/org/apache/cloudstack/storage/datastore/driver/NexentaPrimaryDataStoreDriver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ public void disconnectVolumeFromHost(VolumeInfo volumeInfo, Host host, DataStore
6767
//To change body of implemented methods use File | Settings | File Templates.
6868
}
6969

70+
@Override
71+
public long getUsedBytes(StoragePool storagePool) {
72+
return 0;
73+
}
74+
7075
@Override
7176
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
7277
return 0; //To change body of implemented methods use File | Settings | File Templates.

plugins/storage/volume/sample/src/org/apache/cloudstack/storage/datastore/driver/SamplePrimaryDataStoreDriverImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ public ChapInfo getChapInfo(VolumeInfo volumeInfo) {
8787
@Override
8888
public void disconnectVolumeFromHost(VolumeInfo volumeInfo, Host host, DataStore dataStore) {}
8989

90+
@Override
91+
public long getUsedBytes(StoragePool storagePool) {
92+
return 0;
93+
}
94+
9095
@Override
9196
public long getVolumeSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
9297
return volume.getSize();

0 commit comments

Comments
 (0)