Skip to content

Commit 15eddf3

Browse files
Merge forward branch '4.11' PR #2629
Fix primary storage count when deleting volumes (#2629)
2 parents 4661daa + b9ed42b commit 15eddf3

7 files changed

Lines changed: 653 additions & 273 deletions

File tree

api/src/main/java/com/cloud/storage/VolumeApiService.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package com.cloud.storage;
2020

21+
import java.net.MalformedURLException;
22+
2123
import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
2224
import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
2325
import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd;
@@ -26,13 +28,10 @@
2628
import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd;
2729
import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
2830
import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
31+
import org.apache.cloudstack.api.response.GetUploadParamsResponse;
2932

30-
import com.cloud.exception.ConcurrentOperationException;
3133
import com.cloud.exception.ResourceAllocationException;
3234
import com.cloud.user.Account;
33-
import org.apache.cloudstack.api.response.GetUploadParamsResponse;
34-
35-
import java.net.MalformedURLException;
3635

3736
public interface VolumeApiService {
3837
/**
@@ -72,17 +71,18 @@ public interface VolumeApiService {
7271
*
7372
* @return Volume object
7473
*/
75-
Volume uploadVolume(UploadVolumeCmd cmd) throws ResourceAllocationException;
74+
Volume uploadVolume(UploadVolumeCmd cmd) throws ResourceAllocationException;
7675

7776
GetUploadParamsResponse uploadVolume(GetUploadParamsForVolumeCmd cmd) throws ResourceAllocationException, MalformedURLException;
7877

79-
boolean deleteVolume(long volumeId, Account caller) throws ConcurrentOperationException;
78+
boolean deleteVolume(long volumeId, Account caller);
8079

8180
Volume attachVolumeToVM(AttachVolumeCmd command);
8281

8382
Volume detachVolumeFromVM(DetachVolumeCmd cmd);
8483

85-
Snapshot takeSnapshot(Long volumeId, Long policyId, Long snapshotId, Account account, boolean quiescevm, Snapshot.LocationType locationType, boolean asyncBackup) throws ResourceAllocationException;
84+
Snapshot takeSnapshot(Long volumeId, Long policyId, Long snapshotId, Account account, boolean quiescevm, Snapshot.LocationType locationType, boolean asyncBackup)
85+
throws ResourceAllocationException;
8686

8787
Snapshot allocSnapshot(Long volumeId, Long policyId, String snapshotName, Snapshot.LocationType locationType) throws ResourceAllocationException;
8888

@@ -92,10 +92,8 @@ public interface VolumeApiService {
9292
* Extracts the volume to a particular location.
9393
*
9494
* @param cmd
95-
* the command specifying url (where the volume needs to be extracted to), zoneId (zone where the volume
96-
* exists),
95+
* the command specifying url (where the volume needs to be extracted to), zoneId (zone where the volume exists),
9796
* id (the id of the volume)
98-
*
9997
*/
10098
String extractVolume(ExtractVolumeCmd cmd);
10199

engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/VolumeInfo.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.cloud.vm.VirtualMachine;
2626

2727
public interface VolumeInfo extends DataObject, Volume {
28+
2829
boolean isAttachedVM();
2930

3031
void addPayload(Object data);
@@ -36,6 +37,7 @@ public interface VolumeInfo extends DataObject, Volume {
3637
Long getLastPoolId();
3738

3839
String getAttachedVmName();
40+
3941
VirtualMachine getAttachedVM();
4042

4143
void processEventOnly(ObjectInDataStoreStateMachine.Event event);

engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/VolumeService.java

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@
2020

2121
import java.util.Map;
2222

23-
import com.cloud.utils.Pair;
2423
import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity;
2524
import org.apache.cloudstack.framework.async.AsyncCallFuture;
2625
import org.apache.cloudstack.storage.command.CommandResult;
2726

2827
import com.cloud.agent.api.to.VirtualMachineTO;
29-
import com.cloud.exception.ConcurrentOperationException;
3028
import com.cloud.host.Host;
3129
import com.cloud.hypervisor.Hypervisor.HypervisorType;
3230
import com.cloud.offering.DiskOffering;
31+
import com.cloud.utils.Pair;
3332

3433
public interface VolumeService {
3534
class VolumeApiResult extends CommandResult {
@@ -54,50 +53,36 @@ public VolumeInfo getVolume() {
5453
/**
5554
* Creates the volume based on the given criteria
5655
*
57-
* @param cmd
58-
*
5956
* @return the volume object
6057
*/
6158
AsyncCallFuture<VolumeApiResult> createVolumeAsync(VolumeInfo volume, DataStore store);
6259

6360
/**
6461
* Delete volume
65-
*
66-
* @param volumeId
67-
* @return
68-
* @throws ConcurrentOperationException
6962
*/
7063
AsyncCallFuture<VolumeApiResult> expungeVolumeAsync(VolumeInfo volume);
7164

72-
/**
73-
*
74-
*/
7565
boolean cloneVolume(long volumeId, long baseVolId);
7666

77-
/**
78-
*
79-
*/
8067
AsyncCallFuture<VolumeApiResult> createVolumeFromSnapshot(VolumeInfo volume, DataStore store, SnapshotInfo snapshot);
8168

8269
VolumeEntity getVolumeEntity(long volumeId);
8370

84-
AsyncCallFuture<VolumeApiResult> createManagedStorageVolumeFromTemplateAsync(VolumeInfo volumeInfo, long destDataStoreId,
85-
TemplateInfo srcTemplateInfo, long destHostId);
71+
AsyncCallFuture<VolumeApiResult> createManagedStorageVolumeFromTemplateAsync(VolumeInfo volumeInfo, long destDataStoreId, TemplateInfo srcTemplateInfo, long destHostId);
8672

87-
AsyncCallFuture<VolumeApiResult> createVolumeFromTemplateAsync(VolumeInfo volume, long dataStoreId,
88-
TemplateInfo template);
73+
AsyncCallFuture<VolumeApiResult> createVolumeFromTemplateAsync(VolumeInfo volume, long dataStoreId, TemplateInfo template);
8974

9075
AsyncCallFuture<VolumeApiResult> copyVolume(VolumeInfo srcVolume, DataStore destStore);
9176

9277
AsyncCallFuture<VolumeApiResult> migrateVolume(VolumeInfo srcVolume, DataStore destStore);
9378

9479
AsyncCallFuture<CommandResult> migrateVolumes(Map<VolumeInfo, DataStore> volumeMap, VirtualMachineTO vmTo, Host srcHost, Host destHost);
9580

96-
boolean destroyVolume(long volumeId) throws ConcurrentOperationException;
81+
void destroyVolume(long volumeId);
9782

9883
AsyncCallFuture<VolumeApiResult> registerVolume(VolumeInfo volume, DataStore store);
9984

100-
public Pair<EndPoint,DataObject> registerVolumeForPostUpload(VolumeInfo volume, DataStore store);
85+
public Pair<EndPoint, DataObject> registerVolumeForPostUpload(VolumeInfo volume, DataStore store);
10186

10287
AsyncCallFuture<VolumeApiResult> resize(VolumeInfo volume);
10388

@@ -108,5 +93,4 @@ AsyncCallFuture<VolumeApiResult> createVolumeFromTemplateAsync(VolumeInfo volume
10893
SnapshotInfo takeSnapshot(VolumeInfo volume);
10994

11095
VolumeInfo updateHypervisorSnapshotReserveForVolume(DiskOffering diskOffering, long volumeId, HypervisorType hyperType);
111-
112-
}
96+
}

0 commit comments

Comments
 (0)